Delen via


Write-Error

Hiermee wordt een object naar de foutstroom geschreven.

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

De Write-Error cmdlet declareert een niet-afsluitfout. Fouten worden standaard in de foutenstroom verzonden naar het hostprogramma dat moet worden weergegeven, samen met de uitvoer.

Als u een niet-afsluitfout wilt schrijven, voert u een foutberichttekenreeks, een ErrorRecord-object of een uitzonderingsobject in. Gebruik de andere parameters van Write-Error om de foutrecord in te vullen.

Niet-afsluitfouten schrijven een fout naar de foutstroom, maar ze stoppen de verwerking van opdrachten niet. Als een niet-afsluitfout wordt gedeclareerd voor één item in een verzameling invoeritems, blijft de opdracht de andere items in de verzameling verwerken.

Gebruik het Throw trefwoord om een afsluitfout te declareren. Zie about_Throw voor meer informatie.

Voorbeelden

Voorbeeld 1: Een fout schrijven voor het RegistryKey-object

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

Deze opdracht declareert een niet-afsluitfout wanneer de Get-ChildItem cmdlet een Microsoft.Win32.RegistryKey object retourneert, zoals de objecten in de HKLM: stations of HKCU: van de PowerShell Registry-provider.

Voorbeeld 2: een foutbericht naar de console schrijven

Write-Error "Access denied."

Deze opdracht declareert een niet-afsluitfout en schrijft een fout 'Toegang geweigerd'. De opdracht gebruikt de parameter Bericht om het bericht op te geven, maar laat de optionele naam van de berichtparameter weg.

Voorbeeld 3: Een fout naar de console schrijven en de categorie opgeven

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

Deze opdracht declareert een niet-afsluitfout en geeft een foutcategorie op.

Voorbeeld 4: Een fout schrijven met behulp van een uitzonderingsobject

$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 does not contain any XML files."

Met deze opdracht wordt een uitzonderingsobject gebruikt om een niet-afsluitfout te declareren.

De eerste opdracht maakt gebruik van een hash-tabel om het object System.Exception te maken. Het uitzonderingsobject wordt opgeslagen in de $E variabele. U kunt een hashtabel gebruiken om een object van een type te maken dat een null-constructor heeft.

De tweede opdracht gebruikt de Write-Error cmdlet om een niet-afsluitfout te declareren. De waarde van de uitzonderingsparameter is het uitzonderingsobject in de $E variabele.

Parameters

-Category

Hiermee geeft u de categorie van de fout op. De standaardwaarde is NotSpecified. De aanvaardbare waarden voor deze parameter zijn:

  • Niet opgegeven
  • OpenError
  • CloseError
  • DeviceError
  • DeadlockDetected
  • InvalidArgument
  • InvalidData
  • InvalidOperation
  • InvalidResult
  • InvalidType
  • MetadataError
  • Niet geïmplementeerd
  • Niet geïnstalleerd
  • ObjectNotFound
  • OperationStopped
  • OperationTimeout
  • SyntaxError
  • ParserError
  • Machtiging geweigerd
  • ResourceBusy
  • ResourceExists
  • ResourceUnavailable
  • ReadError
  • WriteError
  • FromStdErr
  • SecurityError
  • ProtocolError
  • ConnectionError
  • AuthenticationError
  • LimietenExceeded
  • QuotaExceeded
  • NotEnabled

Zie Opsomming ErrorCategory voor meer informatie over de foutcategorieën.

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

Hiermee geeft u de actie op die de fout heeft veroorzaakt.

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

-CategoryReason

Hiermee geeft u op hoe of waarom de activiteit de fout heeft veroorzaakt.

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

-CategoryTargetName

Hiermee geeft u de naam van het object dat werd verwerkt toen de fout optrad.

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

-CategoryTargetType

Hiermee geeft u het type van het object dat werd verwerkt toen de fout optrad.

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

-ErrorId

Hiermee geeft u een id-tekenreeks om de fout te identificeren. De tekenreeks moet uniek zijn voor de fout.

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

-ErrorRecord

Hiermee geeft u een foutrecordobject op dat de fout vertegenwoordigt. Gebruik de eigenschappen van het object om de fout te beschrijven.

Als u een foutrecordobject wilt maken, gebruikt u de New-Object cmdlet of haalt u een foutrecordobject op uit de matrix in de $Error automatische variabele.

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

-Exception

Hiermee geeft u een uitzonderingsobject op dat de fout vertegenwoordigt. Gebruik de eigenschappen van het object om de fout te beschrijven.

Als u een uitzonderingsobject wilt maken, gebruikt u een hash-tabel of gebruikt u de New-Object cmdlet.

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

-Message

Hiermee geeft u de berichttekst van de fout op. Als de tekst spaties of speciale tekens bevat, plaatst u deze tussen aanhalingstekens. U kunt ook een berichttekenreeks doorsturen naar Write-Error.

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

-RecommendedAction

Hiermee geeft u de actie op die de gebruiker moet uitvoeren om de fout op te lossen of te voorkomen.

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

-TargetObject

Hiermee geeft u het object op dat werd verwerkt toen de fout optrad. Voer het object in, een variabele die het object bevat of een opdracht waarmee het object wordt opgehaald.

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

Invoerwaarden

String

U kunt een tekenreeks met een foutbericht doorsturen naar Write-Error.

Uitvoerwaarden

Error object

Write-Error schrijft alleen naar de foutstroom. Er worden geen objecten geretourneerd.

Notities

Write-Error wijzigt de waarde van de $? automatische variabele niet, daarom signaleert het geen afsluitfoutvoorwaarde. Als u een afsluitfout wilt signaleren, gebruikt u de methode $PSCmdlet.WriteError().