По умолчанию, Remove-Item
генерируется не прекращающаяся ошибка , которая добавляет ошибку в переменную $Error
без исключения. Чтобы увидеть, что Windows PowerShell будет делать при возникновении непрекращающейся ошибки, посмотрите значение $ErrorActionPreference
переменной (ее значение по умолчанию Continue
).
Access to the path '…' is denied
является примером такой нескончаемой ошибки, поэтому вы можете использовать параметр ErrorAction
, который переопределяет значение $ErrorActionPreference
переменной для текущей команды :
Remove-Item $store\$thumbprint -ErrorAction SilentlyContinue
С другой стороны, $ErrorActionPreference
и параметр ErrorAction
не влияют на то, как PowerShell реагирует на завершающие ошибки , которые останавливают обработку командлета. Поэтому, если мы не уверены, заканчивается ли ошибка или нет, то можно безопасно обработать любую ошибку для блоков Try-Catch-Finally
, используя -ErrorAction Stop
следующим образом:
try {
Remove-Item $store\$thumbprint -ErrorAction Stop
} catch {
### A Catch block can include commands for tracking the error
### or for recovering the expected flow of the script
}