Powershell -lt 和 -gt 给出与预期结果相反的结果
Powershell -lt and -gt giving opposite of expected results
在下面的代码中,如果我添加一个 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 是负数,我猜?
问题是您正在管道 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}}
在下面的代码中,如果我添加一个 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 是负数,我猜?
问题是您正在管道 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}}