web-dev-qa-db-ja.com

Win2008R2サーバー上のPowershellからNIC速度を取得

一部のサーバーでPowershellを介してNICの速度を取得しようとしています。ラボサーバーの場合、1GBのNICがあります。ただし、 Powershellを介してこれを行うと、以下の奇妙な数値が表示されます。

 Get-WmiObject -Class Win32_NetworkAdapter -filter "Name LIKE '%Intel%' OR Name LIKE '%HP%' OR Name LIKE '%Broadcom%'" | select name, speed | ft -AutoSize

name                                                       speed
----                                                       -----
Intel(R) 82580 Gigabit Network Connection    9223372036854775807

返される速度は「9223372036854775807」です-Win32_NetworkAdapterの速度のWMIプロパティを確認すると、「Bits per second」が返されます-しかし、変換すると、これは1秒あたり1GB?

なぜ私がこれを取り戻しているのか、そしてNIC速度を決定する(そしてそれが間違いなく1GBであることを確認する)ための最良の方法)について何か考えはありますか?

私は多くのサーバーを持っているので、何かアイデアがあれば、この情報を取得するための最良の方法を知りたいと思います。

1
lara400

ドメインコンピュータのリストを取得する(ADで実行):

Import-Module ActiveDirectory Get-ADComputer -Filter * | ForEach-Object {$ _。Name}

またはファイルから:

$computers = Get-Content -Path computers.txt

複数のコンピューターの場合:

foreach ($comp in $computers) {

   echo $comp
   Get-WmiObject win32_networkadapter -ComputerName $comp  | Select Name,Manufacturer,Description ,AdapterType,Speed,MACAddress,NetConnectionID | Where-Object {$_.AdapterType -like "*Ethernet*"}

}

これにより、リスト内のコンピューターごとに印刷されます。

Name            : Broadcom NetLink (TM) Gigabit Ethernet
Manufacturer    : Broadcom Corporation
Description     : Broadcom NetLink (TM) Gigabit Ethernet
AdapterType     : Ethernet 802.3
Speed           : 1000000000
MACAddress      : B8:AC:6F:41:B5:D3
NetConnectionID : Ethernet

注:速度はビット/秒単位で、必要に応じてGbpsまたはMbpsに変換します

1
Neo

元のクエリでは、speed@{n="Speed";e={$_.speed/1mb}}に置き換えると、メガ-ビットで計算結果が返されます。

@{n="Speed";e={$_.speed/1gb}}を実行すると、結果がギガビットで返されます。

Powershellは元の測定値が何であるかを認識せず、MB/mbはpowershellと同じです。したがって、結果をbytesにする必要がある場合は、手動で結果を別の8で除算します。@{n="Speed";e={$_.speed/1mb/8}}

変更されたスクリプトは次のようになります。

Get-WmiObject -Class Win32_NetworkAdapter -filter "Name LIKE '%Intel%' OR Name LIKE '%HP%' OR Name LIKE '%Broadcom%'" | select name, @{n="Speed";e={$_.speed/1gb}} | ft -AutoSize

そして、この代替形式@{n="name";e={$_.property *operations*}}は、PowerShellのすべての選択で機能します。

0
Kai Zhao