-2

在下面的代码中,如果我添加一个 where-object,-lt &​​ -gt 会给出与预期相反的结果。

我确定原因是我很愚蠢,但我到底以什么方式搞砸了?

这部分给出了预期的结果,在我的例子中,单个驱动器的 %Free 为 39.8

Get-WmiObject -Namespace root\cimv2 -Class win32_logicaldisk | where-object -Property drivetype -eq 3 | 
format-table deviceid,
@{n='GB Capacity';e={$_.size/1gb}},
@{n='GB Free';e={$_.freespace/1gb}},
@{n='%Free';e={($_.freespace/$_.size)*100}}

但是添加这个

| where {$_.'%Free' -gt 10}

结果没有输出。实际上

| where {$_.'%Free' -gt 0}

不产生任何结果。相反,我必须使用

| where {$_.'%Free' -lt 0}

Powershell 认为 %Free 是一个负数,我猜?

4

1 回答 1

4

问题是你正在管道Format-Table到任何东西。除了输出到屏幕之外,您永远不应该使用它。使用将Format-Table所有内容输出为格式对象,而不是通过管道输入的任何内容。而是使用Select-Object来获得您需要的东西。

Get-WmiObject -Namespace root\cimv2 -Class win32_logicaldisk | where-object -Property drivetype -eq 3 | 
Select-Object deviceid,
@{n='GB Capacity';e={$_.size/1gb}},
@{n='GB Free';e={$_.freespace/1gb}},
@{n='%Free';e={($_.freespace/$_.size)*100}}
于 2019-03-25T17:47:57.867 回答