PowerShell: ошибка захвата для [ввода-вывода.File]::ReadAllText

#powershell #error-handling

#powershell #обработка ошибок

Вопрос:

Я пытаюсь выяснить, как записать сообщение об ошибке для следующей строки кода PowerShell (например, если у пользователя, выполняющего скрипт, нет разрешения на чтение файла):

 [IO.File]::ReadAllText("C:[test].txt")
  

С Get-Content помощью я могу просто указать параметры ErrorAction и ErrorVariable . Похоже, это не относится к приведенной выше строке кода.

Спасибо!

Комментарии:

1. Обратите внимание, что с PowerShell v3 вы можете получить содержимое в виде строки с помощью: Get-Content c:[test].txt -Raw . Аргумент -Raw был добавлен в версии v3. Без этого (Get-Content c:[test].txt).GetType().Name будет возвращен Object[] (считывает все строки файла в массив), а не один String .

Ответ №1:

Используйте блок try …catch

 try{

    [IO.File]::ReadAllText("C:blah")
}
catch{
    #handle here. Catch specific exceptions as well.
}
  

Комментарии:

1. Спасибо! В итоге я использовал $_.Exception.InnerException в блоке catch.