W tym artykule rozważymy funkcje konfigurowania kart sieciowych w systemie Windows za pomocą programu PowerShell. Zobaczmy, jak znaleźć i przypisać statyczny adres IP, serwer DNS lub skonfigurować interfejs sieciowy, aby otrzymywać konfigurację IP z serwera DHCP. Za pomocą tych poleceń cmdlet można konfigurować sieć w wersjach Core / Nano systemu Windows Server, na serwerze Hyper-V, aby zmieniać ustawienia IP na komputerach zdalnych lub serwerach sieciowych lub w skryptach PS.
Wcześniej polecenie netsh interface ipv4 było używane do konfigurowania ustawień sieciowych w systemie Windows z poziomu interfejsu CLI. W programie PowerShell 3.0 i nowszych można użyć wbudowanego modułu PowerShell do zarządzania ustawieniami sieci Windows NetTCPIP.
Aby uzyskać listę poleceń cmdlet w tym module, uruchom:
get-command -module NetTCPIP
Treść
- Zarządzanie kartami sieciowymi z PowerShell
- Wyświetl ustawienia interfejsu sieciowego TCP / IP z PowerShell
- Skonfiguruj statyczny adres IP z PowerShell
- Set-DnsClientServerAddress: skonfiguruj adresy serwerów DNS
- PowerShell: konfigurowanie uzyskiwania adresu IP z serwera DHCP
- Zdalnie zmieniaj ustawienia IP / DNS w systemie Windows
Zarządzanie kartami sieciowymi z PowerShell
Podajemy listę dostępnych interfejsów sieciowych komputera:
Get-netadapter
Polecenie cmdlet zwraca nazwę interfejsu, status (w górę / w dół), adres MAC, szybkość portu.
W tym przykładzie mam kilka kart sieciowych na moim komputerze (oprócz fizycznego połączenia Ethernet0 istnieje kilka interfejsów sieciowych od Hyper-V i VMWare Player).
Możesz uzyskać dostęp do interfejsów sieciowych według ich nazw lub indeksów (kolumna ifIndex). W naszym przykładzie, aby wybrać fizyczny adapter LAN Intel 82574L, musisz wpisać polecenie:
Get-NetAdapter -Nazwa „Ethernet0”
lub
Get-NetAdapter -InterfaceIndex 8
Możesz zmienić nazwę adaptera:
Zmień nazwę-NetAdapter -Name Ethernet0 -NowaName LAN
Aby wyłączyć interfejs sieciowy, użyj poleceń:
Get-NetAdapter -InterfaceIndex 13 | Disable-NetAdapter
Po włączeniu interfejsu nie można określić jego indeksu, ponieważ nie jest przydzielony. Możesz podać nazwę adaptera lub jego opis.
Włącz-NetAdapter -InterfaceDescription „Hyper-V Virtual Ethernet Adapter”
Jeśli dla adaptera określono VLAN, możesz wyświetlić go w następujący sposób:
Get-NetAdapter | ft Nazwa, status, prędkość łącza, VlanID
Informacje o używanym sterowniku karty sieciowej:
Get-NetAdapter | ft Nazwa, DriverName, DriverVersion, DriverInformation, DriverFileName
Informacje o fizycznych kartach sieciowych (gniazdo PCI, magistrala itp.).
Get-NetAdapterHardwareInfo
Wyświetl ustawienia interfejsu sieciowego TCP / IP z PowerShell
Pobierz aktualne ustawienia interfejsu sieciowego (adres IP, DNS, brama):
Get-NetIPConfiguration -InterfaceAlias Ethernet0
Aby wyświetlić bardziej szczegółowe informacje o konfiguracji interfejsu sieciowego, użyj polecenia:
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
W takim przypadku przypisany profil sieciowy interfejsu (NetProfile.NetworkCategory), ustawienia MTU (NetIPv4Interface.NlMTU), czy odbieranie adresów z DHCP (NetIPv4Interface.DHCP) i niektóre inne przydatne informacje są wyświetlane.
Uzyskaj wartość tylko adres IP interfejsu:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress) .IPv4Address
Skonfiguruj statyczny adres IP z PowerShell
Spróbujmy ustawić statyczny adres IP interfejsu sieciowego. Aby zmienić adres IP, maskę podsieci i bramę interfejsu sieciowego:
Nowy adres NetIP Adres IP 192.168.1.80-Domyślna bramka 192.168.1.1 -Długość prefiksu 24 -Indeks Interfejs 8
Możesz ustawić adres IP, prezentując go jako bardziej tablicę (wyraźniej):
$ ipParams = @
InterfaceIndex = 8
Adres IP = „192.168.1.22”
PrefixLength = 24
AddressFamily = „IPv4”
New-NetIPAddress @ipParams
Jeśli statyczny adres IP jest już skonfigurowany i należy go zmienić, użyj polecenia cmdlet Set-NetIPAddress:
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.1.90
Aby wyłączyć odbieranie adresów IP z DHCP w interfejsie, wykonaj:
Set-NetIPInterface -InterfaceAlias Ethernet0 -DHCP wyłączone
Użyj polecenia cmdlet, aby wyświetlić tabelę routingu. Get-NetRoute
. Aby dodać nową trasę, użyj New-NetRoute:
New-NetRoute -DestinationPrefix „0.0.0.0/0” -NextHop „192.168.0.1” -InterfaceIndex 8
Wyłącz protokół IPv6 dla interfejsu sieciowego:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled: $ false -ComponentID ms_tcpip6
Set-DnsClientServerAddress: skonfiguruj adresy serwerów DNS
Aby ustawić główny i pomocniczy adres serwera DNS w systemie Windows, użyj polecenia cmdlet Set-DNSClientServerAddress. Na przykład:
Set-DNSClientServerAddress -InterfaceIndex 8 -ServerAddresses 192.168.1.11,10.1.1.11
Możesz także ustawić serwer DNS za pomocą tablicy:
$ dnsParams = @
InterfaceIndex = 8
Adresy serwerów = („8.8.8.8”, „8.8.4.4”)
Set-DnsClientServerAddress @dnsParams
Po zmianie ustawień DNS możesz wyczyścić pamięć podręczną DNS:
Wyczyść DnsClientCache
PowerShell: konfigurowanie uzyskiwania adresu IP z serwera DHCP
Aby interfejs sieciowy komputera otrzymał dynamiczny adres IP z serwera DHCP, uruchom polecenie
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Wyczyść ustawienia serwera DNS:
Set-DnsClientServerAddress -InterfaceIndex 8 -ResetServerAddresses
I ponownie uruchom interfejs, aby uzyskać adres IP:
Restart-NetAdapter -InterfaceAlias Ethernet0
Jeśli wcześniej skonfigurowano bramę, usuń ją:
Set-NetIPInterface -InterfaceAlias Ethernet0 | Remove-NetRoute -Confirm: $ false
Zdalnie zmieniaj ustawienia IP / DNS w systemie Windows
Za pomocą programu PowerShell można zdalnie zmieniać ustawienia adresów IP lub serwerów DNS na wielu komputerach zdalnych. Załóżmy, że Twoim zadaniem jest zmiana ustawień DNS dla wszystkich serwerów w określonym kontenerze AD. Aby uzyskać listę komputerów w skrypcie poniżej, używane jest polecenie cmdlet Get-ADComputer, a zdalne połączenie z komputerami odbywa się za pośrednictwem WinRM (polecenia cmdlet Invoke-Command):
$ Servers = Get-ADComputer -SearchBase 'OU = Moscow, DC = winitpro, DC = loc' -Filter '(podobny do systemu operacyjnego „Windows Server *”) ”| Nazwa obiektu sortowania
ForEach ($ Server w $ Servers)
Host zapisu „Serwer $ ($ Server.Name)”
Invoke-Command -ComputerName $ Server.Name -ScriptBlock
$ NewDnsServerSearchOrder = „192.168.1.11”, „8.8.4.4”
$ Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object $ _. DHCPEnabled -ne 'True' -i $ _. DNSServerSearchOrder -ne $ null
Write-Host „Stare ustawienia DNS:”
$ Adaptery | ForEach-Object $ _. DNSServerSearchOrder
$ Adaptery | ForEach-Object $ _. SetDNSServerSearchOrder ($ NewDnsServerSearchOrder) | Out-null
$ Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object $ _. DHCPEnabled -ne 'True' -i $ _. DNSServerSearchOrder -ne $ null
Write-Host „Nowe ustawienia DNS:”
$ Adaptery | ForEach-Object $ _. DNSServerSearchOrder