Как в PowerShell бросить исключение, если вывод предыдущей команды не совпадает с регулярным выражением?
Например, я хочу убедиться, что версия PHP именно та, которая нужна, и продолжить выполнение скрипта, а в противном случае бросить исключение. Проверяю так:
Дальше, как я понимаю, должен быть еще один pipe и команда, которая в случае получения пустой строки выбросит исключение, но найти подобного не могу. Подскажите, как сделать.
WindBridges, похоже у нас с вами разные предстваления о компактности :-) я это к тому что написать скрипт делающий что надо я например за вас смогу а делать из рабочего скрипта однострочник и экомомить там на пробелах или алиасах это увольте
сергей кузьмин, да речь о том, что я недавно знаком с PS, и какие-то простые вещи вызывают у меня вопросы. Просто не думал, что такую простую проверку нельзя написать в одну строку. Варианты с промежуточной переменной я видел, но все ж надеялся, что можно добавить третий пайп, который все решит. В целом я буду рад любому решению, если не в одну строку, то пусть как будет.
WindBridges, я подержу сергей кузьмин - написать нормальный скрипт (если есть условия его применения, конечно) проще, чем извращаться с однострочниками.
Это было решение для ситуации "...пускай они все перезагрузятся, а я пока пойду поужинаю, а то там уже остывает все...". То есть, торопясь вбить в консоль и забыть - самое то.
Но если к этому придется возвращаться, куда удобнее сразу писать "нормально".
Касательно вопроса - для примера:
if (-not(Invoke-Expression 'cmd /C "echo 15"' | Select-String -Pattern "15")){throw 'все пропало!'}
if (-not(Invoke-Expression 'cmd /C "echo 15"' | Select-String -Pattern "PHP 7.4")){throw 'все пропало!'}
Вот только это, скажем так, сомнительный способ проверять наличие софта на машине...
P.S. - Кстати, "выбросить исключение" предполагает, что следующая строка скрипта не будет выполняться , что противоречит концепции скрипта из набора однострочников.
Владимир, спасибо, это как раз то, что было нужно. Кстати, я не говорил про однострочники, все проверки выполняются в контексте скрипта, именно поэтому и нужен throw, без которого, как вы правильно заметили, смысл теряется. Ради интереса, а чем плох этот метод проверки софта?