我正在编写一个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语句中,因为我认为它不相关,但如果您愿意,请告诉我。
答案 0 :(得分:4)
PowerShell将-ne
解释为Select-String
的参数。要解决此问题,您可以删除-ne True
部分并改为使用-not
operator:
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 >
答案 1 :(得分:1)
您的括号已关闭。
-quiet
和-ne
参数被视为Select-String
的参数。
我不确定您希望-quiet
应用哪个命令(我希望Select-String
),但您需要将整个Get-Content ... | Select-String ...
位包裹在()
中,然后再使用-ne "True"
或-ne $True
(取决于您是否需要字符串或布尔值为真)。
if ((Get-Content .\Process2Periods.xmla | Select-String ((Get-Date) | Get-Date -Format "yyyyMM") -quiet) -ne $True)