Windows PowerShell 오류 레코드
cmdlet은 종료 및 종료하지 않는 오류에 대한 오류 조건을 식별하는 System.Management.Automation.ErrorRecord 개체를 전달해야 합니다.
System.Management.Automation.ErrorRecord 개체에는 다음 정보가 포함됩니다.
- 오류를 설명하는 예외입니다. cmdlet이 catch되어 오류 레코드로 변환되는 예외인 경우가 많습니다. 모든 오류 레코드에는 예외가 포함되어야 합니다.
cmdlet이 예외를 catch하지 않은 경우 새 예외를 만들고 오류 조건을 가장 잘 설명하는 예외 클래스를 선택해야 합니다. 그러나 System.Management.Automation.ErrorRecord 개체의 System.Management.Automation.ErrorRecord.Exception 속성을 통해 액세스할 수 있으므로 예외를 throw할 필요가 없습니다.
진단 용도 및 Windows PowerShell 스크립트에서 특정 오류 처리기를 사용하여 특정 오류 조건을 처리하는 데 사용할 수 있는 대상 지정자를 제공하는 오류 식별자입니다. 모든 오류 레코드에는 오류 식별자가 포함되어야 합니다(오류 식별자 참조).
진단 목적으로 사용할 수 있는 일반 지정자를 제공하는 오류 범주입니다. 모든 오류 레코드는 오류 범주를 지정해야 합니다(오류 범주 참조).
선택적 대체 오류 메시지 및 권장 작업(대체 오류 메시지 참조)입니다.
오류를 throw한 cmdlet에 대한 선택적 호출 정보입니다. 이 정보는 Windows PowerShell에 의해 지정됩니다(호출 메시지 참조).
오류가 발생했을 때 처리 중인 대상 개체입니다. 입력 개체이거나 cmdlet이 처리 중인 다른 개체일 수 있습니다. 예를 들어 명령
Remove-Item -Recurse C:\somedirectory
경우 오류는 "C:\somedirectory\lockedfile"에 대한 FileInfo 개체의 인스턴스일 수 있습니다. 대상 개체 정보는 선택 사항입니다.
오류 식별자
오류 레코드를 만들 때 cmdlet 내에서 오류 조건을 지정하는 식별자를 지정합니다. Windows PowerShell은 대상 식별자를 cmdlet의 이름과 결합하여 정규화된 오류 식별자를 만듭니다. 정규화된 오류 식별자는 System.Management.Automation.ErrorRecord 개체의 System.Management.Automation.ErrorRecord.FullyQualifiedErrorId 속성을 통해 액세스할 수. 오류 식별자는 그 자체로 사용할 수 없습니다. 정규화된 오류 식별자의 일부로만 사용할 수 있습니다.
오류 레코드를 만들 때 다음 지침을 사용하여 오류 식별자를 생성합니다.
오류 조건과 관련된 오류 식별자를 만듭니다. 특정 오류 처리기를 사용하여 특정 오류 조건을 처리하는 스크립트 및 진단 목적으로 오류 식별자를 대상으로 지정합니다. 사용자는 오류 식별자를 사용하여 오류와 해당 원본을 식별할 수 있어야 합니다. 또한 오류 식별자를 사용하면 새 예외 하위 클래스가 필요하지 않도록 기존 예외의 특정 오류 조건에 대한 보고를 사용할 수 있습니다.
일반적으로 다른 코드 경로에 다른 오류 식별자를 할당합니다. 최종 사용자는 특정 식별자의 이점을 누릴 수 있습니다. 종종 system.Management.Automation.Cmdlet.WriteError 또는 System.Management.Automation.Cmdlet.ThrowTerminatingError* 호출하는 각 코드 경로에는 고유한 식별자가 있습니다. 일반적으로 오류 메시지에 대한 새 템플릿 문자열을 정의할 때 새 식별자를 정의하고 그 반대의 경우도 마찬가지입니다. 오류 메시지를 식별자로 사용하지 마세요.
특정 오류 식별자를 사용하여 코드를 게시하는 경우 전체 제품 지원 수명 주기에 대한 해당 식별자를 사용하여 오류의 의미 체계를 설정합니다. 원래 컨텍스트와 의미상 다른 컨텍스트에서 다시 사용하지 마세요. 이 오류의 의미 체계가 변경되면 새 식별자를 만든 다음 사용합니다.
일반적으로 특정 CLR 형식의 예외에 대해서만 특정 오류 식별자를 사용해야 합니다. 예외의 형식 또는 대상 개체의 형식이 변경되면 새 식별자를 만든 다음 사용합니다.
보고하는 오류에 간결하게 해당하는 오류 식별자의 텍스트를 선택합니다. 표준 .NET Framework 명명 및 대문자화 규칙을 사용합니다. 공백이나 문장 부호를 사용하지 마세요. 오류 식별자를 지역화하지 마세요.
재현할 수 없는 방식으로 오류 식별자를 동적으로 생성하지 마세요. 예를 들어 프로세스 ID와 같은 오류 정보를 통합하지 마세요. 오류 식별자는 동일한 오류 조건이 발생한 다른 사용자가 본 오류 식별자에 해당하는 경우에만 유용합니다.
오류 범주
오류 레코드를 만들 때 System.Management.Automation.ErrorCategory 열거형에서 정의된 상수 중 하나를 사용하여 오류 범주를 지정합니다. Windows PowerShell은 사용자가 $ErrorView
변수를 "CategoryView"
설정할 때 오류 범주를 사용하여 오류 정보를 표시합니다.
NotSpecified상수에 System.Management.Automation.ErrorCategory 사용하지 않습니다. 오류 또는 오류를 발생시킨 작업에 대한 정보가 있는 경우 범주가 완벽하게 일치하지 않더라도 오류 또는 작업을 가장 잘 설명하는 범주를 선택합니다.
Windows PowerShell에서 표시하는 정보를 범주 보기 문자열이라고 하며 System.Management.Automation.ErrorCategoryInfo 클래스의 속성에서 빌드됩니다. (이 클래스는 System.Management.Automation.ErrorRecord.CategoryInfo 속성에 오류를 통해 액세스됩니다.)
{Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}
다음 목록에서는 표시되는 정보를 설명합니다.
범주: Windows PowerShell 정의 System.Management.Automation.ErrorCategory 상수입니다.
TargetName: 기본적으로 오류가 발생했을 때 cmdlet이 처리하고 있던 개체의 이름입니다. 또는 다른 cmdlet 정의 문자열입니다.
TargetType: 기본적으로 대상 개체의 형식입니다. 또는 다른 cmdlet 정의 문자열입니다.
작업: 기본적으로 오류 레코드를 만든 cmdlet의 이름입니다. 또는 다른 cmdlet 정의 문자열입니다.
이유: 기본적으로 예외 유형입니다. 또는 다른 cmdlet 정의 문자열입니다.
대체 오류 메시지
cmdlet에 대한 오류 레코드를 개발할 때 오류의 기본 오류 메시지는 System.Exception.Message 속성의 기본 메시지 텍스트에서 가져옵니다. 이 속성은 메시지 텍스트가 디버깅 목적으로만 의도된 읽기 전용 속성입니다(.NET Framework 지침에 따라). 기본 메시지 텍스트를 바꾸거나 보강하는 오류 메시지를 만드는 것이 좋습니다. 메시지를 보다 사용자에게 친숙하고 cmdlet에 보다 구체적으로 지정합니다.
대체 메시지는 System.Management.Automation.ErrorDetails 개체에서 제공됩니다. Windows PowerShell에서 사용할 수 있는 추가 지역화 정보를 제공하므로 이 개체의 다음 생성자 중 하나를 사용합니다.
ErrorDetails(Cmdlet, String, String, Object[]): 템플릿 문자열이 cmdlet이 구현되는 동일한 어셈블리의 리소스 문자열이거나 System.Management.Automation.Cmdlet.GetResourceString 메서드의 재정의를 통해 템플릿 문자열을 로드하려는 경우 이 생성자를 사용합니다.
ErrorDetails(Assembly, String, String, Object[]): 템플릿 문자열이 다른 어셈블리에 있고 System.Management.Automation.Cmdlet.GetResourceString재정의를 통해 로드하지 않는 경우 이 생성자를 사용합니다.
대체 메시지는 약간의 차이가 있는 예외 메시지를 작성하기 위한 .NET Framework 디자인 지침을 따라야 합니다. 지침에 따르면 개발자를 위해 예외 메시지를 작성해야 합니다. 이러한 대체 메시지는 cmdlet 사용자에 대해 작성해야 합니다.
system.Management.Automation.Cmdlet.WriteError 또는 System.Management.Automation.Cmdlet.ThrowTerminatingError* 메서드를 호출하기 전에 대체 오류 메시지를 추가해야 합니다. 대체 메시지를 추가하려면 오류 레코드의 System.Management.Automation.ErrorRecord.ErrorDetails 속성을 설정합니다. 이 속성을 설정하면 Windows PowerShell은 기본 메시지 텍스트 대신 system.Management.Automation.ErrorDetails.Message* 속성을 표시합니다.
권장 작업 정보
System.Management.Automation.ErrorDetails 개체는 오류가 발생할 때 권장되는 작업에 대한 정보를 제공할 수도 있습니다.
호출 정보
cmdlet이 system.Management.Automation.Cmdlet.WriteError 또는 System.Management.Automation.Cmdlet.ThrowTerminatingError* 사용하여 오류 레코드를 보고하는 경우 Windows PowerShell은 오류가 발생했을 때 호출된 명령을 설명하는 정보를 자동으로 추가합니다. 이 정보는 명령에서 호출한 cmdlet의 이름, 명령 자체 및 파이프라인 또는 스크립트에 대한 정보를 포함하는 System.Management.Automation.InvocationInfo 개체에서 제공됩니다. 이 속성은 읽기 전용입니다.
또한 참조하십시오
System.Management.Automation.Cmdlet.WriteError
system.Management.Automation.Cmdlet.ThrowTerminatingError*
System.Management.Automation.ErrorCategory
System.Management.Automation.ErrorCategoryInfo
System.Management.Automation.ErrorRecord
System.Management.Automation.ErrorDetails
PowerShell