Я хочу сравнить grep a like результат Select-String со строкой и вернуть логическое значение 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 уже установлен, пропуская.} else {c: / pr ... + ~~~~ Неожиданный токен 'else' в выражении или утверждении.+ CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: UnexpectedToken
Если я запускаю содержимое первого выражения, я получаю результат, как я ожидаю, но мне не удается вернуть логическое значениеtrue или false, когда я помещаю его в часть выражения if.
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.