PowerShell 스크립트의 오류로 인해 성공적으로 완료되지 않습니다. Try catch 블록과 함께 오류 처리를 사용하면 이러한 종료 오류를 관리하고 응답 할 수 있습니다. 이 게시물에서는 try/catch 블록의 기본 사항과 특정 예외 메시지를 찾고 처리하는 방법을 다룰 것입니다.
구문 이해
try catch 블록 구문은 매우 간단합니다., 첫 번째는 try 블록으로 식별되고 두 번째는 catch 블록으로 식별되는 곱슬 괄호로 묶인 두 개의 섹션으로 구성됩니다.
try { # Statement to try}catch { # What to do with terminating errors}
도록 할 수 있습으로 많은 문으로 나가고 싶으나,내가 권하고 그것을 유지하는 가능한 한,아마 단지 하나의 문입니다. 오류 처리의 요점은 한 번에 하나의 명령문으로 작업하고 그와 함께 발생하는 모든 것을 처리하는 것입니다.다음은 PowerShell 콘솔에서 발생하는 오류의 예입니다., 여기에서 내가 만드는 새로운 파일을 사용하여 새로운 항목 microsoft azure 지정하는 존재하지 않는 폴더에 대한 경로.
경우에,스크립트 출력이 이하의 화면을 낭비 공간과 문제를 바로 표시되지 않을 수 있습니다. Try catch 블록을 사용하여 오류 출력을 조작하고보다 관리 친화적으로 만들 수 있습니다.
다음은 try catch 블록의 동일한 새 항목 명령입니다. 2 행에서 명령에 Stop 값을 가진 ErrorAction 매개 변수를 추가해야했습니다., 모든 오류”으로 간주됩 종료”,그래서 때때로 추가할 필요가 이 코드 순서로 종로하고 있습니다.
대신에 지금의 블록의 붉은 화가 보이는 텍스트가 단순한 경고 메시지는 새로운 문제입니다. Force-ErrorAction Stop 과 함께 존재하지 않는 경로 이름은 논리를 catch 블록에 삭제하고 내 사용자 정의 경고를 표시합니다.
$Error 변수를 사용하여
더 읽기 쉽지만 이것은별로 도움이되지 않습니다., 내가 아는 전부는 명령이 성공적으로 완료되지 않았지만 왜 그런지 모르겠다. 를 표시하는 대신 사용자 지정 메시지를 표시할 수 있습니다 특정한 오류 메시지가 발생하는 대신 전체에 빨간 텍스트 예외 블록입니다. Try 블록에서 오류가 발생하면$Error 라는 변수에 저장됩니다. $오류 변수에는 최근 오류 배열이 포함되어 있으며 인덱스 0 에서 배열의 가장 최근 오류를 참조 할 수 있습니다.,
경고 출력은 이제 더 자세한 설명을 보여주는 명령에 실패했습니다.기 때문에 그것을 찾을 수 없는 부분의 경로입니다. 이 메시지는 원래 오류 메시지의 일부 였지만 이제는 더 간결합니다.
를 사용하여 예외 메시지
I 용할 수 있습니다 또한 여러 catch 블록을 경우에는 제가 처리하고 싶은 특정 오류가 다르게한다. 여기에 나를 표시하는 두 개의 서로 다른 사용자 정의 메시지,하나에 대한 경로가 존재하지 않고 하면 잘못된 문자가에 사용된 이름입니다., 다음 스크린 샷에서 try 블록에서 두 개의 다른 명령으로 스크립트를 두 번 실행했습니다. 각 명령,캐치 블록 및 최종 출력은 주황색 및 녹색 화살표로 표시됩니다.
에서 찾고 선 14-16,세 번째 catch 블록 없이는 예외 메시지입니다. 이것은 오류가 다른 캐치 블록 예외와 일치하지 않으면 실행되는”캐치 올”캐치 블록입니다., 면 나는 이 스크립트를 실행하고 메시지가 표시에 마지막 catch 블록,다음 난류에 관련되지 않은 잘못된 문자 파일의 이름 또는 일부 경로 되지 유효합니다.
이제 처음 두 캐치 블록에서 사용할 예외 메시지를 어떻게 알았습니까? 이것은$오류 변수에 첨부 된 다른 정보를 보면 찾을 수 있습니다. 실패한 명령이 발생한 후$Error 를 실행할 수 있습니다.예외.GetType().마지막으로 발생한 오류에 대한 예외 메시지를 보려면 FullName.,
PowerShell 콘솔로 돌아가서 존재하지 않는 경로로 New-Item 명령을 다시 실행 한 다음$Error 명령을 실행하여 예외 메시지를 찾습니다.
붉은 텍스트 바로 다음에 실패한 명령을 포함한 예외 메시지가 포함되지 않는 모듈에서입니다. $오류 변수를 보면 캐치 블록에 사용할 전체 메시지가 표시됩니다.,
try/catch 블록을 사용하면 스크립트의 오류를 처리하고 오류에 따라 다른 작업을 수행하는 데 추가적인 힘이 생깁니다. 캐치 블록은 단순한 오류 메시지 이상을 표시 할 수 있습니다. 오류를 해결하고 나머지 스크립트를 계속 실행하는 논리를 포함 할 수 있습니다.피>