Powershell -lt и -gt дают результаты, противоположные ожидаемым [дубликаты]

В приведенном ниже коде, если я добавлю объект where, -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 — это отрицательное число?


person bbb0777    schedule 25.03.2019    source источник


Ответы (1)


Проблема в том, что вы подключаете 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}}
person TheMadTechnician    schedule 25.03.2019
comment
Дох! Я даже не понял, что сделал это. Именно то, что мне было нужно, спасибо! - person bbb0777; 25.03.2019