2016-12-11 1 views
0

파일을 찾을 수 없다는 예외를 잡아내는 트랩 명령을 작성하려고합니다. 다음 코드입니다.트랩의 작동 방식을 모르겠다

Trap { 
    Clear-Host 
    Write-Host "The file you are looking for does not exist" 
} 

Get-ItemProperty C:\fake 

오해하는 이유는 무엇입니까?

+0

'은 Get-ItemProperty를 C :

$ErrorActionPreference = 'Stop' 

또는 특정 cmdlet을 위해 그것을 설정 $PSDefaultParameterValues 해시 테이블을 사용하여 명시 적으로 모든 시간을 ument, 스크립트/함수의 시작 부분에 $ErrorActionPreference 변수를 설정 : \ fake -ErrorAction Stop' – beatcracker

+0

'get-help trap -sh'를 통해 작업 할 것을 제안합니다. – LotPings

+0

@ user2120893 직면 한 실제 문제를 포함하도록 질문을 업데이트 할 수 있습니까? 이렇게하면 유사한 문제가있는 다른 사용자가 질문을 찾아 볼 수 있습니다 (예 : upvote ;-) 예 : 예 : 트랩에서 오류를 포착하지 못했습니다. 발신자에게 오류가 어떻게 발생했는지 문제가 있습니까? 기타 – jpaugh

답변

4

트랩 오류 만에게 (파이프 라인을 중지 오류를) 종료에 실행, 그래서 먼저이 문제가되는 cmdlet의 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 

위해하지에 -ErrorAction Stop 파라미터를 지정하는 인수

$PSDefaultParameterValues['Get-ItemProperty:ErrorAction'] = 'Stop' 
$PSDefaultParameterValues['Do-OtherStuff:ErrorAction'] = 'Stop' 
$PSDefaultParameterValues['Set-*:ErrorAction'] = 'Stop' 
+0

고마워, 나는 내 책을 이해하지 못했다 함정의 작동 방식에 대한 설명 – user2120893

관련 문제