1

我正在编写一个 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 语句中,因为我认为它不相关,但如果您想查看它,请告诉我。

4

2 回答 2

4

PowerShell 将 解释-neSelect-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 > 
于 2015-02-18T21:14:25.283 回答
1

您的括号已关闭。

和论点被-quiet视为.-neSelect-String

我不确定你想-quiet应用什么命令(我期望Select-String),但你需要将整个Get-Content ... | Select-String ...位包装起来(),然后使用-ne "True"or -ne $True(取决于你想要字符串还是布尔值)。

if ((Get-Content .\Process2Periods.xmla | Select-String ((Get-Date) | Get-Date -Format "yyyyMM") -quiet) -ne $True)
于 2015-02-18T21:14:37.413 回答