我想将类似Select-String结果的grep与字符串进行比较,并返回布尔值true或false,但是当我将所有内容都放入if / else表达式中时,我无法匹配正确的语法。
我得到的错误输出是:
在线:1个字符:102 + ...对象{$ _ |找到Select-String 1程序包。})-找到了eq 1个程序包。)... + ~~~~~~~~~表达式或语句中出现意外的标记“包”。在第1行 字符:102 + ...对象{$ _ |找到Select-String 1程序包。})-找到了eq 1个程序包。)... + ~~~~~~~~~在'if'语句中的表达式后缺少结尾')'。在第1行 字符:117 + ... $ _ |找到Select-String 1程序包。})-找到了eq 1个程序包。){echo ... +〜表达式或语句中的意外标记')'。在线:1个字符:184 + ... rometheus-wmi-exporter已安装,正在跳过。 }其他{c:/ pr ... + ~~~~表达式或语句中出现意外的标记“ else”。 + CategoryInfo:ParserError:(:) [],ParentContainsErrorRecordException + FullyQualifiedErrorId:UnexpectedToken
如果我运行第一个表达式的内容,则会得到预期的结果,但是当我将它放入if的表达式部分时,我无法返回布尔值true或false。
powershell -NoProfile -ExecutionPolicy unrestricted -Command --% "if ((choco list prometheus-wmi-exporter | Where-Object {$_ | Select-String "1 packages found."}) -eq "1 packages found.") { echo "prometheus-wmi-ex
porter is already installed, skipping." } else { c:/programdata/chocolatey/bin/choco.exe install --force -y prometheus-wmi-exporter.install }"
我的最终目标是,如果我得到一个匹配项以返回true,否则返回false并执行false语句。
答案 0 :(得分:0)
尝试这样重写:
array(3) {
[0]=>
int(33)
[1]=>
int(55)
[2]=>
int(70)
}
答案 1 :(得分:0)
-local
clist.exe
(choco list的快捷方式)并检查一下?clist -local|find /i "prometheus-wmi-exporter" &&(echo installed)||(echo not installed)
-(not)match
检查的choco输出,就足够了。if((clist -local) -match 'prometheus-wmi-exporter'){"installed"}else{"not installed"}