使用Where-Object,为什么这样做..
Get-CimInstance -ClassName Win32_MountPoint | Where-Object {$_.Directory -like 'Win32_Directory (Name = "C:\")'}
但这不是:
Get-CimInstance -ClassName Win32_MountPoint | Where-Object {$_.Directory -eq 'Win32_Directory (Name = "C:\")'}
我假设-eq运算符需要额外的引号,或者语音标记可能存在问题。
由于
答案 0 :(得分:2)
它不起作用,因为Directory
属性包含嵌套对象,而不是字符串。因此,相等运算符将Win32_Directory
对象与字符串进行比较,并正确地发现它们不相等。
您需要将Directory
属性转换为实际字符串,例如像这样:
... | Where-Object { "$($_.Directory)" -eq 'Win32_Directory (Name = "C:\")' }
或者像这样:
... | Where-Object { $_.Directory.ToString() -eq 'Win32_Directory (Name = "C:\")' }
或(更好)检查嵌套对象的相关属性,例如像这样:
... | Where-Object { $_.Directory.Name -eq 'C:\' }