Комблеты Get-ChildItem
, Select-String
и ForEach-Object
можно комбинировать следующим образом:
$dir = '...' # specify the directory whose subtree to search.
Get-ChildItem $dir -Recurse -File -Filter *.ps1 |
Select-String 'fit(', 'fun(' -List |
ForEach-Object { Throw "Phrase found: $($_ | Out-String)" }
Если вы упакуете вышеперечисленное как скрипт, использование Throw
заставит ваш скрипт сообщать код завершения 1
.
В качестве альтернативы, если вы хотите найти и сообщить все совпадения до сообщая об ошибке, пропустите вызов ForEach-Object
, соберите все совпадения с $matchesFound = Get-ChildItem ...
и бросьте их, или используйте Write-Error
и вручную вызовите exit 1
.
. Чтобы вызвать сценарий с помощью CLI , используйте:
# PowerShell [Core] executable shown; use powershell.exe for Windows PowerShell
pwsh -NoProfile -File YourScript.ps1
Примечание. К сожалению, интерфейс командной строки PowerShell неожиданно сообщает об ошибках через stdout , а сообщения об ошибках шумят и занимают несколько строк в Windows PowerShell - см. этот ответ для обхода и справочной информации.