powershell 中的更多条件而不合逻辑 return

More condition in powershell and not logical return

我需要根据我的情况获取驱动器盘符,但是 powershell return "true" 或 "false" 为此

(Get-Volume).driveletter `
  -and (get-volume).size -gt "700000000000" `
  -and (get-physicaldisk).MediaType -eq "HDD"

当得到(Get-Volume).driveletter是return盘符,当更多条件return合乎逻辑。为什么?

谢谢

PowerShell 的逻辑运算符 return 布尔值 $true$false。当运算符的参数被转换时,它们的原始值不会被保留。

(某些语言如 JavaScript 将 return 来自逻辑运算符的预转换值,但许多语言不会。)

为此,你最好使用管道:

$res = Get-Volume `
   | ? { $_.driveletter -and $_.size -gt "700000000000" `
          -and (get-physicaldisk -objectid $_.ObjectId).MediaType -eq "HDD" }

这也避免了如果任何磁盘是 HDD 则 (get-physicaldisk).MediaType -eq "HDD" 为真的问题。而我怀疑您想要的驱动器是 HDD,具有驱动器号并且具有足够的大小。