Powershell数学 - 四舍五入

时间:2013-07-24 21:03:40

标签: math powershell

我有一个返回NIC速度的功能,恰好是95或950(NIC上的Mbps或Gbps)。但是,我希望将其分别舍入为100或1000。

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

1 个答案:

答案 0 :(得分: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而停滞不前......

我希望你不要以为我批评你的要求,只是一些对我有所帮助的建议。