Задать вопрос
@Drovosek01

Почему в Powershell ошибки прав доступа при выполнении New-Item и Remove-Item не попадают в блок catch?

Есть папка по пути $targetPath, у которой я изменил права, чтобы при удалении или изменении папки запрашивались права администратора:
spoiler
66af7e743ebcd439765856.png


Есть такой тестовый код:
try {
    $targetPath = 'D:\TEMP\folder\test\Новая папка'
    $tempFile = [System.IO.Path]::Combine($targetPath, [System.IO.Path]::GetRandomFileName())
    [void](New-Item -Path $tempFile -ItemType File -Force)
    Remove-Item -Path $targetPath -Force
} catch {
    Write-Host 'BIG ERROR'
    exit 1
}

При выполнении этого кода я ожидаю, что в терминале не будет никаких ошибок, только текст "BIG ERROR".
Тем не менее при попытке создать файл в папке и удалить папку - возникают ошибки и они отображаются в окне терминала.

Это нормально?
Почему так?
Как сделать так, чтобы ошибки выполнения данного кода не выводились в терминал, а вместо этого выполнялся код из блока catch?
  • Вопрос задан
  • 192 просмотра
Подписаться 1 Средний 4 комментария
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
Drovosek01, в catch{} не попадает потому что ошибка не блокирующая
Remove-Item [-Path] <System.String[]> ....
За раз можно удалять несколько объектов. и при ошибке удаления одного процесс не прерывается, а продолжается, если об этом не попросить

-ErrorAction Stop правильный ответ
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы