레지스트리 키에서 PowerShell 변수 설정을 처리하려고합니다.
따라서 try{} catch {}
키가 존재하지 않는 경우 최종 오류를 제거하기 위해 a 를 사용 합니다. 그러나 여전히 콘솔에 오류 출력이 나타납니다.
$ZZ_ConVTL = try { (Get-ItemProperty -path "HKCU:\Console" -name VirtualTerminalLevel).VirtualTerminalLevel } catch { "N/A" }
...
# Output:
Get-ItemProperty : Property VirtualTerminalLevel does not exist at path HKEY_CURRENT_USER\Console.
At C:\Users\Administrator\Documents\xxxx\xxxx.ps1:181 char:32
+ ... = try { (Get-ItemProperty -path "HKCU:\Console" -name VirtualTermi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (VirtualTerminalLevel:String) [Get-ItemProperty], PSArgumentException
+ FullyQualifiedErrorId : System.Management.Automation.PSArgumentException,Microsoft.PowerShell.Commands.GetItemPropertyCommand
이 오류가 콘솔에 표시되지 않도록하려면 어떻게해야합니까?
무엇 당신의 Get-ItemProperty
전화를 방출하는 것은입니다 종료되지 않는 반면, 오류 try
/ catch
단지 잡는다 종료 오류를.
공통 매개 변수 -ErrorAction Stop
를 사용 하여 cmdlet에 의해 생성 된 (첫 번째) 비 종료 오류를 try
/ catch
처리 하는 종료 오류로 승격 합니다.
일반적으로 미리 환경 설정 변수 를 설정하여 동일한 효과를 얻을 수
$ErrorActionPreference = 'Stop'
있지만 그렇게해도 외부 프로그램 호출 과 모듈 에서 구현 된 함수 에는 영향을 미치지 않습니다 .
또한보십시오:
about_Try_Catch_Finally
도움말 항목을 참조하십시오.
종결 오류와 비 종료 오류를 발생시키는시기에 대한 명령 작성자를위한 지침의 맥락에서 기본적인 오류 유형 에 대한 설명 : 이 답변 .
포괄적 인 개요 PowerShell에서의 놀라 울 정도로 복잡한 오류 처리 : 이 GitHub의 워드 프로세서 문제 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다