PowerShell 布尔表达式

PowerShell Boolean Expression

我正在编写一个 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 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 > 

你的括号不对。

-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)