Powershell中的更多条件而不是逻辑返回

时间:2018-11-26 08:25:57

标签: powershell logical-operators

我需要根据情况获取驱动器号,但是powershell为此返回“ true”或“ false”

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

当get (Get-Volume).driveletter是返回盘符时,更多条件返回逻辑时。为什么?

Thnx

1 个答案:

答案 0 :(得分:1)

PowerShell的逻辑运算符返回布尔值$true$false。转换运算符的参数时,不会保留其原始值。

(某些语言(如JavaScript会从逻辑运算符返回预转换的值,但许多语言则不会)。

为此,您最好使用管道:

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

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