0

我有一个函数可以返回网卡的速度,它恰好是 95 或 950(网卡上的 Mbps 或 Gbps)。但是,我希望将其分别四舍五入为 100 或 1000。

$nicWmiParse =  Get-WmiObject -ComputerName $env:COMPUTERNAME -Class Win32_NetworkAdapter | Where-Object { $_.Speed -and $_.MACAddress }
$nicSpeed = [math]::floor($nicWmiParse.Speed/1MB)
4

1 回答 1

3

问题似乎是 MB 与 MiB 的问题。如果直接取 $nicWmiParse.Speed 值,则 GBit NIC 为 1000000000。

答案是:

$NIC = Get-WmiObject -ComputerName $env:COMPUTERNAME -Class Win32_NetworkAdapter | Where-Object { $_.Speed -and $_.MACAddress }
$Speed = $NIC.Speed / 1000000

我刚刚复制了您的 WMI 过滤器,因为我没有您提供的值(可能是因为合法的隐私问题)。

我希望这一切都有效,这是我的第一个 StackOverflow 帖子 :)


只是我的一点建议:如果您无法使用一种方法(四舍五入),请尝试退后一步,看看您实际上想要做什么(以适当的、用户友好的数字获取 NIC 速度)。尤其是使用 Powershell,您通常会尝试找出 Powershell 人员已经拥有的低级内容,并且他们通常在一个不错的小 CMDlet 中提供此功能。看看 Powershell 与 VBS 中的 Active Directory 加入脚本:)

我实际上希望我们现在有另一个这样的案例,但有时事情会卡在 WMI 中......

我希望你不要认为我在批评你的提问,只是一些对我有很大帮助的建议。

于 2013-07-24T21:50:04.330 回答