2016-07-13 2 views
0

PowerShell 스크립트에 대한 자체 오류 처리 시스템을 개발하려고합니다.모든 유형의 오류를 변수로 캡처

  1. 스크립트가 실행되는 동안 ANY 오류가 감지되면 콘솔에 빨간색 텍스트가 없음 = 오류 메시지가 표시되지 않습니다.
  2. 같은 시간에 ANY 오류는 추가 분석을 위해 자체 변수에 텍스트로 저장해야합니다.

나는 무엇을해야할지 모르겠다. 방법을 개발하는 것입니다 -

try{7/0} catch{$e3=$_.Exception.Message} 

내가 모르는 : 나는 캐치/시도 사용할 수 있습니다 종료 오류를

$e1=Write-Error "UUU" 2>&1 
$e2=Get-Process none_null 2>&1 

: 종료되지 않는 오류를 위해 나는, 예를 들어, 스트림의 리디렉션을 사용할 수 있습니다 UNIVERSAL 코드 패턴으로 모든 유형의 오류와 동등하게 작동합니다. 리디렉션 (e1/e2)이있는 패턴이 종료 오류와 함께 작동하지 않았으므로 try/catch가 종료되지 않는 오류를 포착하지 않았습니다. 내 유일한 생각은 변수 을 $ ErrorActionPreference으로 설정하고 값을으로 설정하는 것입니다. 즉, 종료 유형으로 ANY 오류를 만든 다음 try/catch 패턴을 사용합니다.

내 시나리오에서는 이것이 유일한 방법입니까? 더 나은 해결책이 있습니까?

+0

안녕하세요. @Smarty - 제발 # 1 점을 명확히하려고합니다. [편집] (http://stackoverflow.com/posts/38353532/edit) 나는 이것이 무엇을 의미하는지 명확히하는 것처럼 보일 수 없다 :''빨간 글씨가 없다 = 콘솔에 에러 메시지가 없다. ''당신은 빨간색 글씨가 필요 없다는 뜻입니까? 또는 빨간색 텍스트의 위치에 특정 오류를 인쇄하고 싶습니까? 질문을 편집하려고했지만 # 1을 원했던 것을 이해할 수 없었습니다. – gravity

+3

'$ e = & (쓰기 오류 오류; 1/0) 2> & 1' – PetSerAl

+0

안녕하세요, @ 중력! >> 빨간색 텍스트가 필요 없다는 뜻입니까? 정확합니다. 나는 (내 스크립트가 실행되는 동안) 콘솔에 빨간색 텍스트가 필요하거나 원하지 않지만, 얼마나 심각한 오류가 발견되었는지는 중요하지 않습니다. 아니 - 빨간 텍스트. 못. – Smarty

답변

0

$Error을 찾고 계십니까?

$Error
가장 최근의 오류를 나타냅니다 오류 객체의 배열을 포함합니다. 가장 최근 오류는 배열의 첫 번째 오류 개체 ($Error[0])입니다.

관련 문제