当我尝试执行以下 PowerShell 命令时,出现错误。
命令 :
*PS cert:\currentuser\authroot> gci | 其中主题-like“联合网络“*
错误如下:
Where-Object:无法绑定参数“FilterScript”。无法将“System.String”类型的“subject”值转换为“System.Management.Automation.ScriptBlock”类型。在第 1 行,字符:12 + gci | 其中 <<<< subject -like "联合网络“+ CategoryInfo:InvalidArgument:(:) [Where-Object],ParameterBindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand
我正在使用 Windows PowerShell ISE。
非常感谢一个可行的解决方案
答案1
看起来您正在使用 PowerShell Vs.2,该版本不支持新的where syntax
。
在 PowerShell 版本 1 和 2 中,使用:
gci | where {$_.subject -like "UTN"}
您需要在表达式周围加上花括号,并引用带有$_.
前缀的任何属性。
答案2
Peter Hahndorf 已经回答了这个问题,但我想扩展一下您收到的错误消息:
无法将“System.String”类型的“主题”值转换为“System.Management.Automation.ScriptBlock”类型
这就是说它不能将 a 转换string
为 a scriptBlock
,这意味着where
需要跟一个像这样的脚本块:{code here}
请务必阅读错误消息并尝试解释其含义。
答案3
使用“-match”查找可能位于主题中任何地方的 UTN
gci | ?{$_.subject -match "UTN"}
如果您使用“-like”但没有显示任何内容,请将您要查找的内容放在引号内的星号之间。
gci | ?{$_.subject -like "*UTN*"}