Powershell ErrorAction это ключ, с помощью которого мы можем обходить часть ошибок. Это помогает остановить скрипт, если будет ошибка.
У меня есть две директории, одна которая существует, а другая нет. Если я выполню поиск файлов, то скрипт выведет ошибку:
$path = 'C:\NotExist\','C:\Exist\'
$path | Get-ChildItem
Get-ChildItem : Cannot find path 'C:\NotExist\' because it does not exist.
Что бы этого избежать у нас есть ключ ErrorAction со следующими значениями:
- Continue или 0 - значение по умолчанию. Ошибка выводится на экран, но работа скрипта продолжается.
- SilentlyContinue или 1 - ошибка не выводится на экран и скрипт продолжает работу.
- Stop или 2 - останавливает выполнение при ошибке.
- Ignore или 3 - игнорирует ошибки и при этом никакие логи об ошибке не сохраняются.
- Inquire - с этим ключом у нас будет запрос на дальнейшее действия.
- Suspend - работает при режиме Workflow (рабочих процессов). К обычным командлетам не имеет отношения.
Как передать роли FSMO с помощью Powershell
Пример со значением по умолчанию:
$services = "NotExist","NetLogon"
$services | Get-Service -ErrorAction Continue
В случае с SilentContinue у нас ошибок не будет:
Get-Process -Name "NotExist","svchost" -ErrorAction SilentlyContinue
При этом, конечно, ключ мы должны указывать везде где ожидаем увидеть ошибку:
Если мы выполним такую команду, то все равно получим ошибку, которая остановит процесс:
Get-Variable -Name $null -ErrorAction SilentlyContinue
Это ошибка, которая прерывает процесс и для нее нужно использовать другие методы в виде try и catch.
...
Подписывайтесь на наш Telegram канал
Теги: #powershell