Konfigurieren Sie Netzwerkeinstellungen unter Windows mit PowerShell: IP-Adresse, DNS, Standard-Gateway, statische Routen

Admin

Unter Windows können Sie die Einstellungen für Ihre Netzwerkadapter nicht nur über die GUI, sondern auch über die PowerShell-Eingabeaufforderung verwalten. In diesem Artikel schauen wir uns die wichtigsten Cmdlets an, mit denen Sie die aktuelle IP-Adresse eines Netzwerkadapters herausfinden können. Weisen Sie eine statische IP-Adresse zu, weisen Sie einem DNS-Server IPs zu oder konfigurieren Sie eine Netzwerkschnittstelle, um eine IP-Konfiguration von einem DHCP zu erhalten Server. Mit diesen Cmdlets können Sie Netzwerke sowohl unter Windows 10/11 als auch unter Windows Server (bzw Serverkern Ausgaben), Hyper-V-Server, um die IP-Einstellungen von Netzwerkadaptern auf Remotecomputern und in Ihren PowerShell-Automatisierungsskripts zu ändern.

Inhalt:

  • Netzwerkadaptereinstellungen über PowerShell verwalten
  • Wie erhalte ich IP-Adresseinstellungen mit PowerShell?
  • Festlegen einer statischen IP-Adresse unter Windows mithilfe von PowerShell
  • Legen Sie DNS-Server-IP-Adressen in Windows mit PowerShell fest
  • Routing-Tabellen mit PowerShell verwalten
  • PowerShell: Adapter von statischer IP-Adresse auf DHCP ändern
  • Ändern Sie DNS- und IP-Adressen aus der Ferne auf mehreren Computern mit PowerShell

Zuvor war die netsh interface ipv4 Der Befehl wurde verwendet, um Netzwerkeinstellungen über die CLI zu verwalten. In PowerShell 3.0 und neuer können Sie die integrierte Funktion verwenden NetTCPIP PowerShell-Modul zum Verwalten von Netzwerkeinstellungen unter Windows.

Um die Liste der Cmdlets in diesem Modul abzurufen, führen Sie den folgenden Befehl aus:

get-command -module NetTCPIP

Verwalten von Windows-Netzwerkeinstellungen mit dem PowerShell NetTCPIP-Modul
Dieses Modul beinhaltet auch die Test-NetConnection Cmdlet, mit dem offene TCP-Ports auf Remotecomputern gefunden werden können.

Netzwerkadaptereinstellungen über PowerShell verwalten

Verfügbare Netzwerkschnittstellen auf einem Windows-Computer auflisten:

Get-NetAdapter

Das Cmdlet gibt den Schnittstellennamen, seinen Status (Up/Down), die MAC-Adresse und die Portgeschwindigkeit zurück.

In diesem Beispiel habe ich mehrere Netzwerkadapter auf meinem Computer (neben der physischen Verbindung, Ethernet0, Ich habe Hyper-V Und VMWare-Player Netzwerk Schnittstellen).

So zeigen Sie nur aktivierte physische Netzwerkschnittstellen an:

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

Get-NetAdapter – Liste der verbundenen Netzwerkadapter

Sie können nur bestimmte Netzwerkadapterparameter anzeigen, z. B. Name, Geschwindigkeit, Status oder MAC-Adresse:

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

Listen Sie die Netzwerk-Mac-Adresse mit Powershell auf
Windows hat möglicherweise welche versteckte Netzwerkadapter. Um sie alle anzuzeigen, fügen Sie das hinzu IncludeHidden Parameter:

Get-NetAdapter –IncludeHidden

Das Ergebnis ist eine Liste aller virtuellen WAN-Miniport-Adapter, die für verschiedene Verbindungstypen, einschließlich VPN, verwendet werden. Ein Neustart dieser Adapter ist häufig erforderlich behebt einige VPN-Verbindungsfehler mit dem integrierten Windows-Client. Es gibt separate PowerShell-Cmdlets zum Verwalten von VPN-Verbindungen.

Sie können auf Netzwerkschnittstellen anhand ihrer Namen oder Indizes verweisen (die Index Spalte). In unserem Beispiel zur Auswahl des physischen LAN-Adapters Intel 82574L Gigabit-Netzwerkverbindung, verwenden Sie den Befehl:

Get-NetAdapter -Name Ethernet0

oder:

Get-NetAdapter -InterfaceIndex 8

Powershell Get-NetAdapter wählt NIC nach Namen aus

Sie können den Adapternamen ändern:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

Um eine Netzwerkschnittstelle zu deaktivieren, verwenden Sie diesen Befehl:

Get-NetAdapter -Name Ethernet0| Disable-NetAdapter

Aktivieren Sie die Netzwerkkarte anhand ihres Namens:

Enable-NetAdapter -Name Ethernet0

Verwenden von PowerShell zum Deaktivieren eines Netzwerkadapters

Wenn der Netzwerkadapter konfiguriert ist VLAN Nummer, Sie können es sehen:

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

So erfahren Sie die Informationen über den von Ihnen verwendeten Netzwerkadaptertreiber:

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

Liste der verwendeten Netzwerkadapter-Treiber

Listen Sie die Informationen zu physischen Netzwerkadaptern (PCI-Steckplatz, Bus usw.) auf:

Get-NetAdapterHardwareInfo

Deaktivieren Sie das IPv6-Protokoll für die Netzwerkschnittstelle:

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

Deaktivieren Sie das NetBIOS-Protokoll für eine Netzwerkschnittstelle:

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

Wie erhalte ich IP-Adresseinstellungen mit PowerShell?

So erhalten Sie aktuelle Netzwerkadaptereinstellungen in Windows (IP-Adresse, DNS, Standard-Gateway):

Get-NetIPConfiguration -InterfaceAlias Ethernet0

Get-NetIPConfiguration – Rufen Sie die IP-Konfiguration unter Windows über PowerShell ab

Um detailliertere Informationen zur TCP/IP-Konfiguration der Netzwerkschnittstelle anzuzeigen, verwenden Sie den Befehl

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

In diesem Fall ist die zugewiesener Netzwerkstandort (Profil) (NetProfile. NetworkCategory) der Schnittstelle, MTU-Einstellungen (NetIPv4Interface. NlMTU), ob der Bezug einer IP-Adresse von DHCP aktiviert ist (NetIPv4Interface. DHCP) und eine Reihe weiterer nützlicher Informationen werden angezeigt.

Detaillierte Informationen zu Get-NetIPConfiguration

So erhalten Sie nur die IPv4-Schnittstellenadresse:

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

Geben Sie nur den Wert der IP-Adresse der Schnittstelle zurück:

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

Beim Kopieren von Dateien auf VMs ist es vielen Administratoren aufgefallen Schlechte Netzwerkleistung unter Windows Server 2019 mit aktivierten Hyper-V-Rollen. In diesem Fall hilft das Zurücksetzen der TCP-Stack-Einstellungen auf die Einstellungen, die in Windows Server 2016 verwendet wurden, zur Behebung der Probleme:
Set-NetTCPSetting -SettingName DatacenterCustom, Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom, Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom, Datacenter -ForceWS Disabled

Zeigen Sie eine Liste der Netzwerkprotokolle an, die für einen Netzwerkadapter aktiviert oder deaktiviert werden können:

Get-NetAdapterBinding -Name ethernet0 -IncludeHidden -AllBindings

Get-NetAdapterBinding zeigt aktivierte Netzwerkprotokolle an
Name DisplayName ComponentID Aktiviert. Ethernet-Datei- und Druckerfreigabe für Microsoft-Netzwerke ms_server True. Ethernet-NetBIOS-Schnittstelle ms_netbios True. Ethernet Microsoft LLDP-Protokolltreiber 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-Netzwerkadapter-Multiplexerprotokoll ms_implat Falsch. Ethernet Link-Layer Topology Discovery Mapper E/A-Treiber ms_lltdio True. Ethernet NDIS Usermode I/O Protocol ms_ndisuio True. Ethernet-Punkt-zu-Punkt-Protokoll über Ethernet ms_pppoe True. Ethernet Link-Layer Topology Discovery Responder ms_rspndr True. Ethernet Internet Protocol Version 6 (TCP/IPv6) ms_tcpip6 True. Erweiterbarer virtueller Ethernet-Hyper-V-Switch vms_pp Falsch. Ethernet WFP Native MAC Layer LightWeight Filter ms_wfplwf_lower True. Ethernet-Client für Microsoft-Netzwerke ms_msclient True. Ethernet Npcap-Pakettreiber (NPCAP) INSECURE_NPCAP True. Ethernet WINS Client (TCP/IP) Protokoll ms_netbt True. Ethernet-Bridge-Treiber ms_l2bridge True. Ethernet WFP 802.3 MAC Layer LightWeight Filter ms_wfplwf_upper True. Ethernet-QoS-Paketplaner ms_pacer True. 
Um aktive TCP/IP-Sitzungen auf einem Computer anzuzeigen, verwenden Sie die Get-NetTCPConnection-Cmdlet.

Festlegen einer statischen IP-Adresse unter Windows mithilfe von PowerShell

Versuchen wir, eine statische IP-Adresse für die Netzwerkkarte festzulegen. Um eine IP-Adresse, Netzwerkmaske und ein Standard-Gateway für eine Ethernet0-Netzwerkschnittstelle zu ändern, verwenden Sie den folgenden Befehl:

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

Sie können eine IP-Adresse mithilfe einer Array-Struktur festlegen (visueller):

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

Sie können die New-NetIPAddress verwenden, um Fügen Sie einem Netzwerkadapter eine zweite IP-Adresse (Alias) hinzu.

Wenn bereits eine statische IP-Adresse konfiguriert ist und geändert werden muss, verwenden Sie die Set-NetIPAddress Cmdlet:

Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90

Um den Bezug einer IP-Adresse von DHCP für Ihren Adapter zu deaktivieren, führen Sie den folgenden Befehl aus:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled

Statische IP-Adresse entfernen:

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

Legen Sie DNS-Server-IP-Adressen in Windows mit PowerShell fest

Um die bevorzugten und alternativen DNS-Server-IP-Adressen in Windows festzulegen, verwenden Sie die Set-DNSClientServerAddress Cmdlet. Zum Beispiel:

Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11

Sie können DNS-Nameserver-IPs auch mithilfe eines Arrays angeben:

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

Nachdem Sie die DNS-Einstellungen geändert haben, können Sie den DNS-Resolver-Cache leeren (entspricht ipconfig /flushdns ):

Clear-DnsClientCache

DNS-Cache-Inhalte in Windows anzeigen::
Get-DnsClientCache

Routing-Tabellen mit PowerShell verwalten

Der Get-NetRoute Mit dem Cmdlet wird die Routing-Tabelle angezeigt.

Rufen Sie die Standard-Gateway-Route für eine physische Netzwerkschnittstelle in Windows ab:

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

Powershell: Standard-Gateway-Route abrufen

Um eine neue Route hinzuzufügen, verwenden Sie die Neue-NetRoute Cmdlet:

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

Dieser Befehl fügt der Routing-Tabelle eine permanente Route hinzu (ähnlich wie route -p add). Wenn Sie eine temporäre Route hinzufügen möchten, fügen Sie die hinzu -PolicyStore "ActiveStore" Möglichkeit. Diese Route wird nach dem Neustart von Windows gelöscht.

Entfernen Sie eine Route aus der Routing-Tabelle:

Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False

PowerShell: Adapter von statischer IP-Adresse auf DHCP ändern

So konfigurieren Sie Ihren Computer so, dass er vom Netzwerkadapter eine dynamische IP-Adresse erhält DHCP-Server, führen Sie diesen Befehl aus:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled

Löschen Sie die DNS-Servereinstellungen:

Set-DnsClientServerAddress –InterfaceAlias Ethernet0 -ResetServerAddresses

Und starten Sie Ihren Netzwerkadapter neu, um automatisch eine IP-Adresse vom DHCP-Server zu erhalten:

Restart-NetAdapter -InterfaceAlias Ethernet0

Wenn Sie zuvor ein Standard-Gateway konfiguriert hatten, entfernen Sie es:

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

Wenn Sie alle IPv4-Einstellungen für die Netzwerkschnittstellen des Computers zurücksetzen und sie so umstellen müssen, dass sie eine dynamische IP-Adresse von DHCP erhalten, verwenden Sie das folgende 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
}

Ändern Sie DNS- und IP-Adressen aus der Ferne auf mehreren Computern mit PowerShell

Mit PowerShell können Sie die IP-Adresse oder die DNS-Servereinstellungen auf mehreren Remotecomputern remote ändern.

Angenommen, Ihre Aufgabe besteht darin, die DNS-Einstellungen auf allen Windows Server-Hosts im spezifischen AD zu ändern Organisationseinheit (OU). Das folgende Skript verwendet die Get-ADComputer Cmdlet, um die Liste der Computer aus Active Directory abzurufen und dann eine Verbindung zu den Remotecomputern herzustellen WinRM (Die Invoke-Command-Cmdlet wird eingesetzt):

$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}
}
}

Aktualisieren der PowerShell-Version unter Windows
Aktualisieren der PowerShell-Version unter Windows

In diesem Artikel wird beschrieben, wie Sie ein Update durchführen Windows PowerShell auf die neu...

Verwalten von Druckern und Treibern mit PowerShell in Windows 10 / Server 2016
Verwalten von Druckern und Treibern mit PowerShell in Windows 10 / Server 2016

Im Vorheriger Artikelhaben wir uns die VBS-Skripte der alten Schule angesehen, mit denen sich Dru...

Ausführen von PowerShell-Skript (*.PS1) als Windows-Dienst
Ausführen von PowerShell-Skript (*.PS1) als Windows-Dienst

Jedes PowerShell-Skript kann in einen echten Windows-Dienst umgewandelt werden, der im Hintergrun...