Sie benötigen eine Befehlszeile, um den Duplexstatus auf Windows-NIC-Karten zu testen

3249
Jacko

Dies wäre für Windows 7

Ich habe den folgenden Powershell-Befehl ausprobiert

get-wmiobject Win32_NetworkAdapter | foreach-object { get-wmiobject -namespace root/WMI -class MSNdis_macOptions -filter "InstanceName='$($_.Name)'"} 

aber ich scheine davon keine brauchbaren Informationen zu erhalten.

2
Siehe diese [verwandte Frage] (http://superuser.com/q/86581/820). Es sieht nicht so aus, als wäre dies über die Windows-API verfügbar. Normalerweise ist dies nur auf der NIC-Treiberebene verfügbar. Möglicherweise hat Ihr NIC-Hersteller etwas verfügbar. [Dieser Beitrag] (http://opennms.530661.n2.nabble.com/Can-WMI-get-duplex-settings-td2451090.html) bestätigt dies ebenfalls. heavyd vor 10 Jahren 1

1 Antwort auf die Frage

0
xXhRQ8sD2L7Z

Da ich kein Windows 8 (und Get-NetAdapterAdvancedProperty) habe, habe ich das benutzt, um Speed ​​/ Duplex zu bekommen:

Update: Das hat mich verrückt gemacht. Ich habe verschiedene Fehler mit nicht vorhandenen Schlüsseln erhalten, und es stellt sich heraus, dass bestimmte Geräte keine Duplexgeschwindigkeit haben, wie USB-Passthrough und Microsoft Cluster-Geräte. Ich habe es aktualisiert, um den Aufzählungswert von Duplex zu verwenden und alle verfügbaren NICs durchlaufen zu lassen.

Außerdem sah das Original nicht die Registrierung auf dem Ziel, sondern den localhost.

Function Get-NICSpeedDuplex { Param ( [String]$computer ) $key = "SYSTEM\\CurrentControlSet\\Control\\Class\\"  gwmi -Class Win32_NetworkAdapterConfiguration -Computer $computer -Filter "IPEnabled='$true'" | % { $suffix = $([String]$_.Index).PadLeft(4,"0")  #get remote registry value of speed/duplex $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer) $service = $reg.OpenSubKey("$key\\$suffix\\Ndi").GetValue("Service") If ($service -imatch "usb") { # This USB device will not have a '*SpeedDuplex' key New-Object PSObject -Property @{ "Device" = $_.Description "Speed/Duplex" = "USB Device" } } ElseIf ($service -imatch "netft") { # Microsoft Clustered Network will not have a '*SpeedDuplex' key New-Object PSObject -Property @{ "Device" = $_.Description "Speed/Duplex" = "Cluster Device" } } Else { $speedduplex = $reg.OpenSubKey("$key\\$suffix").GetValue("*SpeedDuplex") $enums = "$key\$suffix\Ndi\Params\*SpeedDuplex\enum" New-Object PSObject -Property @{ "Device" = $_.Description "Speed/Duplex" = $reg.OpenSubKey($enums).GetValue($speedduplex) } } } } 

Dieser Registrierungsschlüssel ist etwas unleserlich hartcodiert, scheint aber auf meinem Windows 7-PC und meinen Remote-Servern zu funktionieren (2003/2008/2012). Von diesem Artikel : "Der Unterschlüssel stellt die Klasse der Netzwerkadaptergeräte dar, die das System unterstützt."

Ausgabe des Skripts:

PS C:\> Get-NICSpeedDuplex "test-server-xx" | ft -auto  Speed/Duplex Device  ------------ ------  Auto Negotiation vmxnet3 Ethernet Adapter  Auto Negotiation vmxnet3 Ethernet Adapter #4  Cluster Device Microsoft Failover Cluster Virtual Adapter