파워셸에 오류가 있을 때 오류 코드를 얻는 방법은 무엇입니까?
제 스니펫은 다음과 같습니다.
$msg=Remove-Item -Recurse -Force C:\users\bkp 2>&1
if ($LASTEXITCODE -eq 1)
{
"Encountered error during Deleting the Folder. Error Message is $msg. Please check." >> $LogFile
exit
}
C:\users\bkp 폴더가 없습니다.$msg가 $LASTX 오류 메시지를 표시함에도 불구하고ITCODE는 여전히 0입니다.플래그로 캡처하려면 어떻게 해야 합니까?
사용할 수 있습니다.$?
마지막 명령의 결과를 결정하는 자동 변수입니다.실제 오류에 대한 액세스가 필요한 경우 다음을 사용할 수 있습니다.$Error
자동 변수배열의 첫 번째 항목은 마지막으로 발생한 오류입니다.
Remove-Item -Recurse -Force C:\users\bkp 2>&1
if( -not $? )
{
$msg = $Error[0].Exception.Message
"Encountered error during Deleting the Folder. Error Message is $msg. Please check." >> $LogFile
exit
}
$LASTEXITCODE는 명령행 프로그램이 상태를 반환하는 것을 엄격히 의미합니다.Remove-item과 같이 PS에 내장된 Cmdlet은 최대 3가지 방법으로 오류를 반환합니다.경고의 경우 메시지(또는 기타)를 작성합니다.NET 객체)를 "경고 스트림"으로 이동합니다.PSv3에서는 해당 스트림을 파일로 리디렉션하는 간단한 방법이 있습니다.cmdlet blah blah blah 3>warning.out
두 번째는 오류 스트림을 통해 발생합니다.해당 스트림도 리디렉션할 수 있습니다.... 2>error.out
또는 일반적으로 오류는 try/catch 또는 트랩을 사용하여 잡히거나 -ErrorVariable 매개 변수를 사용하여 변수에 기록됩니다( 참조).help about_commonparameters
) 세 번째 방법은 오류를 "던지는" 것입니다.실패하지 않는 한(시도/캐치 또는 트랩) 오류로 인해 스크립트가 종료됩니다.일반적으로 발생하는 오류는 의 하위 클래스입니다.NET 클래스system.Management.Automation.ErrorRecord
오류 레코드는 반환 코드보다 오류에 대한 훨씬 더 많은 정보를 제공합니다.
파일을 찾을 수 없음 오류로 인해 제거 항목이 실패하면 다음과 같이 기록합니다.System.Management.Automation.ItemNotFoundException
오류 스트림으로 이동합니다.시도/캐치를 사용하여 제거 항목에서 특정 오류 또는 기타 특정 오류를 필터링할 수 있습니다.명령줄에서 PS 명령을 입력하는 경우 입력할 수 있습니다.$error[0]|select-object *
마지막 오류에 대한 많은 정보를 얻으려고 합니다.
다음과 같이 할 수 있습니다.
try {
Remove-Item -Recurse -Force C:\users\bkp 2>&1
} catch {
# oops remove-item failed. Write warning then quit
# replace the following with what you want to do
write-warning "Remove-item encounter error: $_"
return # script failed
}
언급URL : https://stackoverflow.com/questions/17461079/how-to-get-the-error-code-when-there-is-error-in-powershell
'programing' 카테고리의 다른 글
원격 시스템에서 python을 사용하여 mariadb 연결 (0) | 2023.08.25 |
---|---|
jQuery AJAX가 던지는 302 오류 코드는 무엇입니까? (0) | 2023.08.25 |
Javascript 함수 및 기본 매개 변수, IE 및 Chrome에서 작동하지 않음 (0) | 2023.08.25 |
jQuery 문자열에서 '-' 문자를 제거하는 중 (0) | 2023.08.25 |
MySQL의 제한된 수의 테이블에 사용자 액세스 허용 (0) | 2023.08.25 |