Ловушки выполняются только на прерывающие ошибки (ошибки, которые останавливают конвейер), поэтому сначала вам нужно изменить поведение ErrorAction нарушившей командлета:
Trap {
Clear-Host
Write-Host "The file you are looking for does not exist"
}
Get-ItemProperty C:\fake -ErrorAction Stop
Чтобы подавить запись об ошибке из впоследствии барботирования до вызывающий абонент, возврат из текущей области внутри ловушки:
Trap {
Clear-Host
Write-Host "The file you are looking for does not exist"
return
}
Get-ItemProperty C:\fake -ErrorAction Stop
для того, чтобы не указать ARG -ErrorAction Stop
параметра ument явно все время, установите переменную $ErrorActionPreference
в начале вашего скрипта/функции:
$ErrorActionPreference = 'Stop'
или использовать $PSDefaultParameterValues
Hashtable, чтобы установить его для конкретных командлетов:
$PSDefaultParameterValues['Get-ItemProperty:ErrorAction'] = 'Stop'
$PSDefaultParameterValues['Do-OtherStuff:ErrorAction'] = 'Stop'
$PSDefaultParameterValues['Set-*:ErrorAction'] = 'Stop'
'Get-ItemProperty C: \ fake -ErrorAction Stop' – beatcracker
Я предлагаю вам работать через «get-help trap -sh» – LotPings
@ user2120893 Не могли бы вы обновить свой вопрос, включив в него фактические проблемы или как поведение не соответствовало вашим ожиданиям? Это поможет другим пользователям с аналогичными проблемами найти (и повысит ;-) ваш вопрос, например, не удалось ли ловушке ловить ошибки; У вас возникли проблемы с тем, как ошибка добралась до вызывающего? И т. Д. – jpaugh