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](/f/ce595d9980e73397236e8b63e2655334.png)
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](/f/4a7cc001a0ec2d23de4ccd5838670499.png)
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](/f/131fd083be5b46c779ed74cd1edef3fb.jpg)
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](/f/47976c0c7e690de8db26e93363af08cb.png)
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](/f/6c91290aab07cb95c57b0bf88db030b3.png)
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](/f/c9de4ee34a1b31ea4ee10793bc03a0a6.png)
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](/f/8d305caef34ce662fef040a5e818a4a2.png)
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](/f/0015a10379c36c1c55ab17c553f8bf90.png)
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
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](/f/00617511bf63a71fdb3f53e14be602c5.jpg)
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.
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
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
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](/f/bf06b481d5fd11a257b4d95cdab1560a.jpg)
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}
}
}