Write-Error

Scrive un oggetto nel flusso di errori.

Sintassi

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>]

Descrizione

Il Write-Error cmdlet dichiara un errore non irreversibile. Per impostazione predefinita, gli errori vengono inviati nel flusso di errori al programma host per essere visualizzati insieme all'output.

Per scrivere un errore non irreversibile, immettere una stringa di messaggio di errore, un oggetto ErrorRecord o un oggetto Exception. Usare gli altri parametri di Write-Error per popolare il record di errore.

Gli errori non irreversibili scrivono un errore nel flusso di errori, ma non interrompono l'elaborazione dei comandi. Se un errore non irreversibile viene dichiarato per un elemento di una raccolta di elementi di input, il comando continua a elaborare gli altri elementi della raccolta.

Per dichiarare un errore irreversibile, usare la Throw parola chiave . Per altre informazioni, vedere about_Throw.

Esempio

Esempio 1: Scrivere un errore per l'oggetto RegistryKey

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

Questo comando dichiara un errore non irreversibile quando il Get-ChildItem cmdlet restituisce un Microsoft.Win32.RegistryKey oggetto, ad esempio gli oggetti nelle HKLM: unità o HKCU: del provider del Registro di sistema di PowerShell.

Esempio 2: Scrivere un messaggio di errore nella console

Write-Error "Access denied."

Questo comando dichiara un errore non irreversibile e scrive un errore "Access denied". Il comando usa il parametro Message per specificare il messaggio, ma omette il nome del parametro facoltativo Message.

Esempio 3: Scrivere un errore nella console e specificare la categoria

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

Questo comando dichiara un errore non irreversibile e specifica una categoria di errore.

Esempio 4: Scrivere un errore usando un oggetto 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."

Questo comando usa un oggetto Exception per dichiarare un errore non irreversibile.

Il primo comando usa una tabella hash per creare l'oggetto System.Exception. Salva l'oggetto eccezione nella $E variabile . È possibile usare una tabella hash per creare qualsiasi oggetto di un tipo che contiene un costruttore null.

Il secondo comando usa il Write-Error cmdlet per dichiarare un errore non irreversibile. Il valore del parametro Exception è l'oggetto Exception nella $E variabile .

Parametri

-Category

Specifica la categoria dell'errore. Il valore predefinito è NotSpecified. I valori validi per questo parametro sono:

  • NotSpecified
  • OpenError
  • CloseError
  • DeviceError
  • DeadlockDetected
  • InvalidArgument
  • InvalidData
  • InvalidOperation
  • InvalidResult
  • InvalidType
  • MetadataError
  • NotImplemented
  • Non installato
  • ObjectNotFound
  • OperationStopped
  • OperationTimeout
  • Syntaxerror
  • Parsererror
  • PermissionDenied
  • ResourceBusy
  • ResourceExists
  • ResourceUnavailable
  • ReadError
  • WriteError
  • FromStdErr
  • Securityerror
  • ProtocolError
  • ConnectionError
  • AuthenticationError
  • Limiti superati
  • QuotaExceeded
  • NotEnabled

Per informazioni sulle categorie di errore, vedere Enumerazione 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

Specifica l'azione che ha causato l'errore.

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

-CategoryReason

Specifica come o perché l'attività ha causato l'errore.

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

-CategoryTargetName

Specifica il nome dell'oggetto che era in fase di elaborazione quando si è verificato l'errore.

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

-CategoryTargetType

Specifica il tipo dell'oggetto che era in fase di elaborazione quando si è verificato l'errore.

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

-ErrorId

Specifica una stringa di ID per identificare l'errore. La stringa deve essere univoca per l'errore.

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

-ErrorRecord

Specifica un oggetto record di errore che rappresenta l'errore. Usare le proprietà dell'oggetto per descrivere l'errore.

Per creare un oggetto record di errore, usare il New-Object cmdlet o ottenere un oggetto record di errore dalla matrice nella $Error variabile automatica.

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

-Exception

Specifica un oggetto eccezione che rappresenta l'errore. Usare le proprietà dell'oggetto per descrivere l'errore.

Per creare un oggetto eccezione, usare una tabella hash o usare il New-Object cmdlet .

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

-Message

Specifica il testo del messaggio dell'errore. Se il testo include spazi o caratteri speciali, racchiuderlo tra virgolette. È anche possibile inviare tramite pipe una stringa di messaggio a Write-Error.

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

-RecommendedAction

Specifica l'azione che l'utente deve eseguire per risolvere o impedire l'errore.

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

-TargetObject

Specifica l'oggetto che era in fase di elaborazione quando si è verificato l'errore. Immettere l'oggetto , una variabile che contiene l'oggetto o un comando che ottiene l'oggetto .

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

Input

String

È possibile inviare tramite pipe una stringa contenente un messaggio di errore a questo cmdlet.

Output

None

Questo cmdlet non restituisce output. Scrive solo nel flusso dei messaggi di errore.

Note

Write-Error non modifica il valore della $? variabile automatica, pertanto non segnala una condizione di errore irreversibile. Per segnalare un errore irreversibile, utilizzare il metodo $PSCmdlet.WriteError().