precisa da linha de comando para testar o status duplex nas placas NIC do Windows

2

isso seria para o windows 7

Eu tentei o seguinte comando powershell

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

mas não consigo obter informações úteis a partir disso.

    
por Jacko 09.05.2014 / 22:42

1 resposta

0

Como não tenho o Windows 8 (e Get-NetAdapterAdvancedProperty ) usei isso para obter o Speed / Duplex:

Update: Isso estava me deixando louco. Eu estava recebendo vários erros com chaves não existentes, e verifica-se que certos dispositivos não terão uma velocidade / duplex como passagem USB e dispositivo Microsoft Cluster. Eu atualizei para usar o valor de enum do duplex e também percorrer todos os NICs disponíveis.

Além disso, o original não estava olhando para o registro no destino, e sim para o host local.

Function Get-NICSpeedDuplex {
   Param (
      [String]$computer
   )
   $key = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"

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

É um pouco desajeitado codificar essa chave de registro, mas parece funcionar no meu PC com Windows 7 e servidores remotos (2003/2008/2012). De este artigo : "A subchave representa a classe do adaptador de rede dispositivos que o sistema suporta. "

Saída do script:

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
    
por 11.12.2014 / 06:32