Nakonfigurujte nastavení sítě v systému Windows pomocí PowerShell: IP adresa, DNS, výchozí brána, statické trasy

Ve Windows můžete spravovat nastavení síťových adaptérů nejen z GUI, ale také z příkazového řádku PowerShellu. V tomto článku se podíváme na nejdůležitější rutiny, které můžete použít ke zjištění aktuální IP adresy síťového adaptéru, přiřazení statické IP adresy, přiřazení IP serveru DNS nebo ke konfiguraci síťového rozhraní pro příjem konfigurace IP ze serveru DHCP. Tyto rutiny můžete použít ke konfiguraci sítě ve Windows 10/11 a Windows Server (nebo edicích Server Core), Hyper-V Server, ke změně nastavení IP síťových adaptérů na vzdálených počítačích a ve skriptech automatizace PowerShellu.

Obsah:

Dříve,netsh interface ipv4 byl použit ke správě síťových nastavení z CLI. V prostředí PowerShell 3.0 a novějších můžete použít vestavěnýNetTCPIPModul PowerShell pro správu nastavení sítě v systému Windows.

Chcete-li získat seznam rutin v tomto modulu, spusťte následující příkaz:

get-command -module NetTCPIP

Tento modul také obsahuje rutinu Test-NetConnection, kterou lze použít k vyhledání otevřených portů TCP na vzdálených počítačích.

Správa nastavení síťového adaptéru prostřednictvím prostředí PowerShell

Seznam dostupných síťových rozhraní na počítači se systémem Windows:

Get-NetAdapter

Rutina vrátí název rozhraní, jeho stav (nahoru/dolů), adresu MAC a rychlost portu.

V tomto příkladu mám na počítači několik síťových adaptérů (kromě fyzického připojení Ethernet0, mám síťová rozhraní Hyper-V a VMWare Player).

Chcete-li zobrazit pouze povolená fyzická síťová rozhraní:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}

Můžete zobrazit pouze určité parametry síťového adaptéru, jako je název, rychlost, stav nebo MAC adresa:

Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress

Systém Windows může mít některé skryté síťové adaptéry. Chcete-li je zobrazit všechny, přidejteIncludeHiddenparametr:

Get-NetAdapter –IncludeHidden

Výsledkem bude seznam všech virtuálních adaptérů WAN Miniport, které se používají pro různé typy připojení, včetně VPN. Restartování těchto adaptérů často opravuje některé chyby připojení VPN pomocí vestavěného klienta Windows. Pro správu připojení VPN existují samostatné rutiny prostředí PowerShell.

Na síťová rozhraní můžete odkazovat jejich názvy nebo indexy (sloupec Index). V našem příkladu pro výběr fyzického adaptéru LAN Intel 82574L Gigabit Network Connection použijte příkaz:

Get-NetAdapter -Name Ethernet0

nebo:

Get-NetAdapter -InterfaceIndex 8

Název adaptéru můžete změnit:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

Chcete-li zakázat síťové rozhraní, použijte tento příkaz:

Get-NetAdapter -Name Ethernet0| Disable-NetAdapter

Povolte NIC podle názvu:

Enable-NetAdapter -Name Ethernet0

Pokud má síťový adaptér nakonfigurované číslo VLAN, můžete jej zobrazit:

Get-NetAdapter | ft Name, Status, Linkspeed, VlanID

Zde je návod, jak zjistit informace o ovladači síťového adaptéru, který používáte:

Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName

Vypište informace o fyzických síťových adaptérech (PCI slot, sběrnice atd.):

Get-NetAdapterHardwareInfo

Zakažte protokol IPv6 pro síťové rozhraní:

Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6

Zakažte protokol NetBIOS pro síťové rozhraní:

Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True

Jak získat nastavení IP adresy pomocí PowerShellu

Chcete-li získat aktuální nastavení síťového adaptéru ve Windows (IP adresa, DNS, výchozí brána):

Get-NetIPConfiguration -InterfaceAlias Ethernet0

Chcete-li zobrazit podrobnější informace o konfiguraci síťového rozhraní TCP/IP, použijte příkaz

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

V tomto případě se zobrazí přiřazené síťové umístění (profil) (NetProfile.NetworkCategory) rozhraní, nastavení MTU (NetIPv4Interface.NlMTU), zda je povoleno získávání IP adresy z DHCP (NetIPv4Interface.DHCP) a další užitečné informace.

Chcete-li získat pouze adresu rozhraní IPv4:

(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address

Vraťte pouze hodnotu IP adresy rozhraní:

(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address

Při kopírování souborů do virtuálních počítačů si mnoho správců všimlo slabého výkonu sítě v systému Windows Server 2019 s povolenými rolemi Hyper-V. V tomto případě pomůže vyřešit problémy vrácením nastavení zásobníku TCP na nastavení, která byla použita v systému Windows Server 2016:
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

Zobrazte seznam síťových protokolů, které lze povolit nebo zakázat pro síťový adaptér:

Get-NetAdapterBinding -Name ethernet0 -IncludeHidden -AllBindings

Name                           DisplayName                                        ComponentID          Enabled
----                           -----------                                        -----------          -------
Ethernet                       File and Printer Sharing for Microsoft Networks    ms_server            True
Ethernet                       NetBIOS Interface                                  ms_netbios           True
Ethernet                       Microsoft LLDP Protocol Driver                     ms_lldp              True
Ethernet                       Microsoft NDIS Capture                             ms_ndiscap           True
Ethernet                       Internet Protocol Version 4 (TCP/IPv4)             ms_tcpip             True
Ethernet                       Microsoft RDMA - NDK                               ms_rdma_ndk          True
Ethernet                       Microsoft Network Adapter Multiplexor Protocol     ms_implat            False
Ethernet                       Link-Layer Topology Discovery Mapper I/O Driver    ms_lltdio            True
Ethernet                       NDIS Usermode I/O Protocol                         ms_ndisuio           True
Ethernet                       Point to Point Protocol Over Ethernet              ms_pppoe             True
Ethernet                       Link-Layer Topology Discovery Responder            ms_rspndr            True
Ethernet                       Internet Protocol Version 6 (TCP/IPv6)             ms_tcpip6            True
Ethernet                       Hyper-V Extensible Virtual Switch                  vms_pp               False
Ethernet                       WFP Native MAC Layer LightWeight Filter            ms_wfplwf_lower      True
Ethernet                       Client for Microsoft Networks                      ms_msclient          True
Ethernet                       Npcap Packet Driver (NPCAP)                        INSECURE_NPCAP       True
Ethernet                       WINS Client(TCP/IP) Protocol                       ms_netbt             True
Ethernet                       Bridge Driver                                      ms_l2bridge          True
Ethernet                       WFP 802.3 MAC Layer LightWeight Filter             ms_wfplwf_upper      True
Ethernet                       QoS Packet Scheduler                               ms_pacer             True

Chcete-li zobrazit aktivní relace TCP/IP v počítači, použijte rutinu Get-NetTCPConnection.

Nastavte statickou IP adresu v systému Windows pomocí prostředí PowerShell

Zkusme nastavit statickou IP adresu pro NIC. Chcete-li změnit IP adresu, masku sítě a výchozí bránu pro síťové rozhraní Ethernet0, použijte příkaz:

Get-NetAdapter -Name Ethernet0| New-NetIPAddress –IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24

IP adresu můžete nastavit pomocí struktury pole (více vizuálně):

$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams

New-NetIPAddress můžete použít k přidání druhé IP adresy (aliasu) k síťovému adaptéru.

Pokud je již nakonfigurována statická IP adresa a je třeba ji změnit, použijteSet-NetIPAddresscmdlet:

Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90

Chcete-li zakázat získávání IP adresy z DHCP pro váš adaptér, spusťte příkaz:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled

Odebrat statickou IP adresu:

Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"

Nastavte IP adresy serveru DNS ve Windows pomocí PowerShellu

Chcete-li nastavit preferované a alternativní adresy IP serveru DNS v systému Windows, použijteSet-DNSClientServerAddresscmdlet. Například:

Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11

Adresy IP jmenného serveru DNS můžete zadat také pomocí pole:

$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams

Po změně nastavení DNS můžete vyprázdnit mezipaměť překladače DNS (ekvivalent kipconfig /flushdns):

Clear-DnsClientCache

Zobrazit obsah mezipaměti DNS ve Windows::
Get-DnsClientCache

Správa směrovacích tabulek pomocí PowerShellu

TheGet-NetRoutecmdlet se používá k zobrazení směrovací tabulky.

Získejte výchozí trasu brány pro fyzické síťové rozhraní v systému Windows:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"

Chcete-li přidat novou trasu, použijteNew-NetRoutecmdlet:

New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8

Tento příkaz přidá trvalou cestu do směrovací tabulky (podobně jakoroute -p add). Pokud chcete přidat dočasnou trasu, přidejte-PolicyStore "ActiveStore"volba. Tato trasa bude po restartování Windows odstraněna.

Odebrání trasy ze směrovací tabulky:

Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False

PowerShell: Změňte adaptér ze statické IP adresy na DHCP

Chcete-li nakonfigurovat počítač tak, aby získal dynamickou IP adresu pro síťový adaptér ze serveru DHCP, spusťte tento příkaz:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled

Vymažte nastavení serveru DNS:

Set-DnsClientServerAddress –InterfaceAlias Ethernet0 -ResetServerAddresses

A restartujte síťový adaptér, abyste automaticky získali IP adresu ze serveru DHCP:

Restart-NetAdapter -InterfaceAlias Ethernet0

Další informace:Co je výchozí brána a jak ji najdete na zařízeních?

Pokud jste dříve měli nakonfigurovanou výchozí bránu, odeberte ji:

Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false

Pokud potřebujete resetovat všechna nastavení IPv4 pro síťová rozhraní počítače a přepnout je, abyste získali dynamickou IP adresu z DHCP, použijte následující skript:

$IPType = "IPv4"
$adapter = Get-NetAdapter | ? {$_.Status -eq "up"}
$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
If ($interface.Dhcp -eq "Disabled") {
If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
$interface | Remove-NetRoute -Confirm:$false
}
$interface | Set-NetIPInterface -DHCP Enabled
$interface | Set-DnsClientServerAddress -ResetServerAddresses
}

Změňte DNS a IP adresy vzdáleně na více počítačích pomocí PowerShellu

PowerShell můžete použít ke vzdálené změně IP adresy nebo nastavení serveru DNS na více vzdálených počítačích.

Předpokládejme, že vaším úkolem je změnit nastavení DNS na všech hostitelích Windows Server v konkrétní organizační jednotce AD ​​(OU). Následující skript používá rutinu Get-ADComputer k získání seznamu počítačů ze služby Active Directory a poté se připojí ke vzdáleným počítačům prostřednictvím WinRM (používá se rutina Invoke-Command):

$Servers = Get-ADComputer -SearchBase ‘OU=Servers,OU=Berlin,OU=DE,DC=woshub,DC=cpm’ -Filter '(OperatingSystem -like "Windows Server*")' | Sort-Object Name
ForEach ($Server in $Servers) {
Write-Host "Server $($Server.Name)"
Invoke-Command -ComputerName $Server.Name -ScriptBlock {
$NewDnsServerSearchOrder = "192.168.2.11","8.8.8.8"
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "Old DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
$Adapters | ForEach-Object {$_.SetDNSServerSearchOrder($NewDnsServerSearchOrder)} | Out-Null
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "New DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
}
}

Related Posts