2014-04-21 3 views
1

내 스크립트에서 오류가 발생했는지 확인하기 위해 두 가지 추가 원격 쿼리를 수행해야합니다. 약 200 밀리 초가 걸리고 사용자가 오류를 무시하는 경우 무의미합니다. -ErrorAction SilentlyContinue으로 전화를 받았는지 확인하는 방법이 있습니까? 아니면 호출자가 원한다면 유효성 검사를 억제하기 위해 별도의 스위치를 추가해야합니까?Powershell에서 내 함수가 -ErrorAction SilentlyContinue와 함께 호출되었는지 확인할 수 있습니까?

답변

2

원하는 경우 오류를 처리하는 방법을 확인하려면 $ErrorActionPreference 변수를 확인할 수 있습니다.

Get-Help about_preference_variables을 수행하면이 기본 설정 변수와 다른 기본 설정 변수에 대해 자세히 읽을 수 있습니다.

편집 2014년 4월 22일는 :

Error action preference is 'Continue' 
Test-Error : This is a test error 
At line:12 char:5 
+  Test-Error 
+  ~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Write-Error], WriteErrorException 
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Test-Error 

Error action preference is 'SilentlyContinue' 
Error action preference is 'Continue' 
Test-Error : This is a test error 
At line:14 char:5 
+  Test-Error -ErrorAction Continue 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Write-Error], WriteErrorException 
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Test-Error 

Error action preference is 'Stop' 
Test-Error : This is a test error 
At line:15 char:5 
+  Test-Error -ErrorAction Stop 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Write-Error], WriteErrorException 
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Test-Error 
:

function Test-Error 
{ 
    [CmdletBinding()] 
    PARAM() 

    Write-Host "Error action preference is '$ErrorActionPreference'" 
    Write-Error "This is a test error" 
} 

Test-Error 
Test-Error -ErrorAction SilentlyContinue 
Test-Error -ErrorAction Continue 
Test-Error -ErrorAction Stop 
Write-Host "We shouldn't get here, since last error action was 'Stop'" 

이것은 다음과 같은 출력을 얻을 수 : 여기 당신이 이것을 테스트 할 수있는 방법의 예입니다이 동작

테스트에 예를 추가

+0

방금 ​​실험을했는데'$ ErrorActionPreference'는'-ErrorAction'의 영향을받지 않는 것 같습니다. 나는'-ErrorAction SilentlyContinue'를 감지 할 필요가있다. – VoidStar

+0

@VoidStar'$ ErrorActionPreference' 변수는 적어도 PowerShell 4로 Win8.1 Update 1을 실행하는 컴퓨터의'-ErrorAction'의 영향을받습니다.이 대답을 내 대답에 테스트하는 예제를 추가했습니다. –

+0

나는 깨닫지 못했다. -ErrorAction은 함수에 [CmdletBinding()]이있을 때만 무언가를했다. – VoidStar

관련 문제