Power Shell2010. 1. 14. 16:05

스크립트를 짜다 보면 빨강색으로 나오는 오류메세지를 감추어야할때가 있다.


try
{
$ErrorActionPreference = "Stop"
$Wcf=New-WebServiceProxy -uri "http://$ControlServerIP/Service.svc?wsdl"
[String]$CastData = $Wcf.GetData("$CastServerIP")
echo "Cast Server GetData is Success. Path : ./Log/CastGetData.xml"
}
catch [SystemException]
{
echo "Cast Server GetData is Failed."
}
Finally
{
Set-Content -Path ".\log\CastGetData.xml" -Value $CastData
}


위에서 $Wcf 함수에서 ip가 틀리면 에러가 나지 않고 바로 catch문으로 가고 싶었다....


하지만 꼭 빨강색에러를 낸후 catch문으로 갔다 그래서 이거를 안나게 하는 방법이 있을까 해서 찾아낸게


$ErrorActionPreference = "Stop"


쓰기 귀찮아서 복사해야지 설명은


핵심은 일반적인 셸 오류 메시지는 예외와 다르다는 점을 이해하는 것입니다. 비종료 오류와 종료 오류가 있는데 종료 오류는 파이프라인 실행을 중지하고 예외를 발생시킵니다. 오직 예외만 트랩이 가능합니다. 오류가 발생하면 셸은 기본 제공 $ErrorActionPreference 변수를 찾아 수행할 작업을 확인합니다. 이 변수의 기본값은 "Continue"입니다. 이는 "오류 메시지를 표시하고 작업을 계속 실행하라"는 의미입니다. 값을 "Stop"으로 변경하면 이 변수는 오류 메시지를 표시하고 트랩 가능한 예외를 생성합니다. 그러나 이는 스크립트의 모든 오류가 예외를 생성함을 의미합니다.


Posted by 동동(이재동)