Логические операторы PowerShell возвращают логические значения $true
и $false
.Пока аргументы операторов преобразуются, их исходные значения не сохраняются.
(Некоторые языки, такие как JavaScript, возвращают предварительно преобразованные значения из логических операторов, но многие языки этого не делают.)
Для этого вам лучше использовать конвейер:
$res = Get-Volume `
| ? { $_.driveletter -and $_.size -gt "700000000000" `
-and (get-physicaldisk -objectid $_.ObjectId).MediaType -eq "HDD" }
Это также позволяет избежать проблемы, которая будет иметь значение (get-physicaldisk).MediaType -eq "HDD"
, если какой-либо диск является жестким диском.В то время как я подозреваю, что вы хотите диск, который является жестким диском, имеет букву диска и имеет достаточный размер.