Write-Error

오류 스트림에 개체를 기록합니다.

Syntax

Write-Error
     [-Message] <string>
     [-Category <ErrorCategory>]
     [-ErrorId <string>]
     [-TargetObject <Object>]
     [-RecommendedAction <string>]
     [-CategoryActivity <string>]
     [-CategoryReason <string>]
     [-CategoryTargetName <string>]
     [-CategoryTargetType <string>]
     [<CommonParameters>]
Write-Error
     [-Exception] <Exception>
     [-Message <string>]
     [-Category <ErrorCategory>]
     [-ErrorId <string>]
     [-TargetObject <Object>]
     [-RecommendedAction <string>]
     [-CategoryActivity <string>]
     [-CategoryReason <string>]
     [-CategoryTargetName <string>]
     [-CategoryTargetType <string>]
     [<CommonParameters>]
Write-Error
     [-ErrorRecord] <ErrorRecord>
     [-RecommendedAction <string>]
     [-CategoryActivity <string>]
     [-CategoryReason <string>]
     [-CategoryTargetName <string>]
     [-CategoryTargetType <string>]
     [<CommonParameters>]

Description

cmdlet은 Write-Error 종료하지 않는 오류를 선언합니다. 기본적으로 오류 스트림의 오류는 출력과 함께 표시할 호스트 프로그램으로 전송됩니다.

종료하지 않는 오류를 작성하려면 오류 메시지 문자열, ErrorRecord 개체 또는 Exception 개체를 입력합니다. 오류 레코드를 채우기 위해 다른 매개 변수 Write-Error 를 사용합니다.

종료되지 않는 오류는 오류 스트림에 오류를 기록하지만 명령 처리를 중지하지는 않습니다. 입력 항목 컬렉션의 한 항목에 종료되지 않는 오류가 선언되면 명령은 컬렉션의 다른 항목을 계속 처리합니다.

종료 오류를 선언하려면 키워드(keyword) 사용합니다 Throw . 자세한 내용은 about_Throw 참조하세요.

예제

예제 1: RegistryKey 개체에 대한 오류 작성

Get-ChildItem | ForEach-Object {
    if ($_.GetType().ToString() -eq "Microsoft.Win32.RegistryKey")
    {
        Write-Error "Invalid object" -ErrorId B1 -TargetObject $_
    }
    else
    {
        $_
    }
}

이 명령은 cmdlet이 PowerShell 레지스트리 공급자의 드라이브에 HKCU: 있는 HKLM: 개체와 같은 개체를 반환 Microsoft.Win32.RegistryKey 할 때 Get-ChildItem 종료하지 않는 오류를 선언합니다.

예제 2: 콘솔에 오류 메시지 작성

Write-Error "Access denied."

이 명령은 종료되지 않는 오류를 선언하고 "액세스 거부됨" 오류를 씁니다. 이 명령은 메시지 매개 변수를 사용하여 메시지를 지정하지만 선택적 메시지 매개 변수 이름은 생략합니다.

예제 3: 콘솔에 오류 작성 및 범주 지정

Write-Error -Message "Error: Too many input values." -Category InvalidArgument

이 명령은 종료되지 않는 오류를 선언하고 오류 범주를 지정합니다.

예제 4: Exception 개체를 사용하여 오류 작성

$E = [System.Exception]@{Source="Get-ParameterNames.ps1";HelpLink="https://go.microsoft.com/fwlink/?LinkID=113425"}
Write-Error -Exception $E -Message "Files not found. The $Files location doesn't contain any XML files."

이 명령은 Exception 개체를 사용하여 종료하지 않는 오류를 선언합니다.

첫 번째 명령은 해시 테이블을 사용하여 System.Exception 개체를 만듭니다. 예외 개체를 변수에 $E 저장합니다. 해시 테이블을 사용하여 null 생성자가 있는 형식의 개체를 만들 수 있습니다.

두 번째 명령은 cmdlet을 Write-Error 사용하여 종료하지 않는 오류를 선언합니다. Exception 매개 변수의 값은 변수의 Exception 개체입니다$E.

매개 변수

-Category

오류의 범주를 지정합니다. 기본값은 NotSpecified입니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

  • NotSpecified
  • OpenError
  • CloseError
  • DeviceError
  • DeadlockDetected
  • InvalidArgument
  • InvalidData
  • InvalidOperation
  • InvalidResult
  • InvalidType
  • MetadataError
  • NotImplemented
  • NotInstalled
  • ObjectNotFound
  • OperationStopped
  • OperationTimeout
  • SyntaxError
  • ParserError
  • PermissionDenied
  • ResourceBusy
  • ResourceExists
  • ResourceUnavailable
  • ReadError
  • WriteError
  • FromStdErr
  • SecurityError
  • ProtocolError
  • 커넥트ionError
  • AuthenticationError
  • LimitsExceeded
  • QuotaExceeded
  • NotEnabled

오류 범주에 대한 자세한 내용은 ErrorCategory 열거형을 참조 하세요.

Type:ErrorCategory
Accepted values:NotSpecified, OpenError, CloseError, DeviceError, DeadlockDetected, InvalidArgument, InvalidData, InvalidOperation, InvalidResult, InvalidType, MetadataError, NotImplemented, NotInstalled, ObjectNotFound, OperationStopped, OperationTimeout, SyntaxError, ParserError, PermissionDenied, ResourceBusy, ResourceExists, ResourceUnavailable, ReadError, WriteError, FromStdErr, SecurityError, ProtocolError, ConnectionError, AuthenticationError, LimitsExceeded, QuotaExceeded, NotEnabled
Position:Named
Default value:NotSpecified
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CategoryActivity

오류를 발생시킨 작업을 지정합니다.

Type:String
Aliases:Activity
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CategoryReason

활동이 오류를 발생시킨 방법 또는 이유를 지정합니다.

Type:String
Aliases:Reason
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CategoryTargetName

오류가 발생했을 때 처리 중인 개체의 이름을 지정합니다.

Type:String
Aliases:TargetName
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CategoryTargetType

오류가 발생했을 때 처리 중이던 개체의 유형을 지정합니다.

Type:String
Aliases:TargetType
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ErrorId

오류를 식별할 ID 문자열을 지정합니다. 문자열은 오류에 고유해야 합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ErrorRecord

오류를 나타내는 오류 레코드 개체를 지정합니다. 개체의 속성을 사용하여 오류를 설명합니다.

오류 레코드 개체를 만들려면 cmdlet을 New-Object 사용하거나 자동 변수의 배열에서 오류 레코드 개체를 $Error 가져옵니다.

Type:ErrorRecord
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Exception

오류를 나타내는 예외 개체를 지정합니다. 개체의 속성을 사용하여 오류를 설명합니다.

예외 개체를 만들려면 해시 테이블을 사용하거나 cmdlet을 New-Object 사용합니다.

Type:Exception
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Message

오류 메시지 텍스트를 지정합니다. 텍스트에 공백이나 특수 문자가 포함되어 있으면 따옴표로 묶습니다. 메시지 문자열을 .에 파이프할 Write-Error수도 있습니다.

Type:String
Aliases:Msg
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-RecommendedAction

사용자가 오류를 해결하거나 방지하기 위해 수행해야 하는 작업을 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TargetObject

오류가 발생했을 때 처리 중인 개체를 지정합니다. 개체, 개체를 포함하는 변수 또는 개체를 가져오는 명령을 입력합니다.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

String

오류 메시지가 포함된 문자열을 이 cmdlet으로 파이프할 수 있습니다.

출력

None

이 cmdlet은 출력을 반환하지 않습니다. 오류 메시지 스트림에만 씁니다.

참고

Write-Error 는 자동 변수의 $? 값을 변경하지 않으므로 종료 오류 조건에 대한 신호를 표시하지 않습니다. 종료 오류를 알리려면 $PSCmdlet.WriteError() 메서드를 사용합니다.