我正在编写一个 powershell 脚本,但在评估布尔表达式时遇到问题。
这是我遇到问题的代码行:
if (Get-Content .Process2Periods.xmla | Select-String ((Get-Date) | Get-Date -Format "yyyyMM") -quiet -ne True)
尝试运行时收到此错误消息:
Select-String : A parameter cannot be found that matches parameter name 'ne'.
请帮助我了解问题。
同样为了一点上下文,我正在搜索一个字符串的文件,如果它不存在,我想执行 if 块中的内容。我没有将代码粘贴到 if 语句中,因为我认为它不相关,但如果您想查看它,请告诉我。
PowerShell将-ne
解释为Select-String
的参数。 要解决此问题,您可以删除-ne True
部分并改用-not
运算符:
if (-not (Get-Content .Process2Periods.xmla | Select-String ((Get-Date) | Get-Date -Format "yyyyMM") -quiet))
请注意,如果您更喜欢它而不是-not
,!
也可以工作:
if (!(Get-Content .Process2Periods.xmla | Select-String ((Get-Date) | Get-Date -Format "yyyyMM") -quiet))
此外,上面行的(Get-Date) | Get-Date -Format "yyyyMM"
部分是不必要的。 相反,您可以只执行Get-Date -Format "yyyyMM"
。 见下文:
PS > (Get-Date) | Get-Date -Format "yyyyMM"
201502
PS > Get-Date -Format "yyyyMM"
201502
PS >
括号已关闭。
-quiet
和-ne
的论点被视为Select-String
的论据。
我不确定您希望-quiet
应用于哪个命令(我希望Select-String
(,但您需要将整个Get-Content ... | Select-String ...
位包装在()
中,然后使用 -ne "True"
或 -ne $True
(取决于您是想要字符串还是布尔值 true(。
if ((Get-Content .Process2Periods.xmla | Select-String ((Get-Date) | Get-Date -Format "yyyyMM") -quiet) -ne $True)