Dela via


Write-Error

Skriver ett objekt till felströmmen.

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

Cmdleten Write-Error deklarerar ett icke-avslutande fel. Som standard skickas fel i felströmmen till värdprogrammet som ska visas, tillsammans med utdata.

Om du vill skriva ett icke-avslutande fel anger du en felmeddelandesträng, ett ErrorRecord-objekt eller ett undantagsobjekt . Använd de andra parametrarna Write-Error för för att fylla i felposten.

Icke-avslutande fel skriver ett fel till felströmmen, men de stoppar inte kommandobearbetningen. Om ett icke-avslutande fel deklareras för ett objekt i en samling indataobjekt fortsätter kommandot att bearbeta de andra objekten i samlingen.

Om du vill deklarera ett avslutande fel använder du nyckelordet Throw . Mer information finns i about_Throw.

Exempel

Exempel 1: Skriva ett fel för RegistryKey-objekt

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

Det här kommandot deklarerar ett icke-avslutande fel när cmdleten Get-ChildItem returnerar ett Microsoft.Win32.RegistryKey objekt, till exempel objekten HKLM: i powershell-registerproviderns eller HKCU: enheter.

Exempel 2: Skriva ett felmeddelande till konsolen

Write-Error "Access denied."

Det här kommandot deklarerar ett icke-avslutande fel och skriver felet "Åtkomst nekad". Kommandot använder parametern Meddelande för att ange meddelandet, men utelämnar det valfria namnet på meddelandeparametern.

Exempel 3: Skriv ett fel till konsolen och ange kategorin

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

Det här kommandot deklarerar ett icke-avslutande fel och anger en felkategori.

Exempel 4: Skriva ett fel med hjälp av ett undantagsobjekt

$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."

Det här kommandot använder ett undantagsobjekt för att deklarera ett icke-avslutande fel.

Det första kommandot använder en hash-tabell för att skapa objektet System.Exception . Undantagsobjektet sparas i variabeln $E . Du kan använda en hash-tabell för att skapa alla objekt av en typ som har en null-konstruktor.

Det andra kommandot använder cmdleten Write-Error för att deklarera ett icke-avslutande fel. Värdet för parametern Undantag är objektet Undantag i variabeln $E .

Parametrar

-Category

Anger kategorin för felet. Standardvärdet är NotSpecified. De acceptabla värdena för den här parametern är:

  • NotSpecified
  • OpenError
  • CloseError
  • DeviceError
  • DeadlockDetected
  • InvalidArgument
  • InvalidData
  • InvalidOperation
  • InvalidResult
  • InvalidType
  • MetadataError
  • Inteimplementerad
  • NotInstalled
  • ObjectNotFound
  • Åtgärdstopad
  • OperationTimeout
  • SyntaxError
  • ParserError
  • PermissionDenied
  • ResourceBusy
  • ResourceExists
  • ResourceUnavailable
  • ReadError
  • WriteError
  • FromStdErr
  • SecurityError
  • ProtocolError
  • ConnectionError
  • AuthenticationError
  • LimitsExceeded
  • QuotaExceeded
  • NotEnabled

Information om felkategorierna finns i ErrorCategory Enumeration.

Typ:ErrorCategory
Godkända värden: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
Standardvärde:NotSpecified
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-CategoryActivity

Anger den åtgärd som orsakade felet.

Typ:String
Alias:Activity
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-CategoryReason

Anger hur eller varför aktiviteten orsakade felet.

Typ:String
Alias:Reason
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-CategoryTargetName

Anger namnet på det objekt som bearbetades när felet inträffade.

Typ:String
Alias:TargetName
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-CategoryTargetType

Anger typen av objekt som bearbetades när felet inträffade.

Typ:String
Alias:TargetType
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ErrorId

Anger en ID-sträng för att identifiera felet. Strängen ska vara unik för felet.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ErrorRecord

Anger ett felpostobjekt som representerar felet. Använd egenskaperna för objektet för att beskriva felet.

Om du vill skapa ett felpostobjekt använder du cmdleten New-Object eller hämtar ett felpostobjekt från matrisen i den $Error automatiska variabeln.

Typ:ErrorRecord
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Exception

Anger ett undantagsobjekt som representerar felet. Använd egenskaperna för objektet för att beskriva felet.

Om du vill skapa ett undantagsobjekt använder du en hash-tabell eller använder cmdleten New-Object .

Typ:Exception
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Message

Anger meddelandetexten för felet. Om texten innehåller blanksteg eller specialtecken omger du den inom citattecken. Du kan också skicka en meddelandesträng till Write-Error.

Typ:String
Alias:Msg
Position:0
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-RecommendedAction

Anger vilken åtgärd användaren ska vidta för att lösa eller förhindra felet.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-TargetObject

Anger det objekt som bearbetades när felet inträffade. Ange objektet, en variabel som innehåller objektet eller ett kommando som hämtar objektet.

Typ:Object
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

String

Du kan skicka en sträng som innehåller ett felmeddelande till den här cmdleten.

Utdata

None

Den här cmdleten returnerar inga utdata. Den skriver bara till felmeddelandeströmmen.

Kommentarer

Write-Error ändrar inte värdet för den $? automatiska variabeln, därför signalerar den inte ett avslutande feltillstånd. Om du vill signalera ett avslutande fel använder du metoden $PSCmdlet.WriteError().