Konfiguracja sieci za pomocą PowerShell (adres IP, DNS, brama, trasy)

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

Ten moduł zawiera również polecenie cmdlet Test-NetConnection, które można wykorzystać do sprawdzenia dostępności portów TCP na komputerach zdalnych..

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

Za pomocą polecenia cmdlet New-NetIPAddress można dodać drugi adres IP do interfejsu sieciowego..

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