Write-Error
Zapisuje obiekt w strumieniu błędów.
Składnia
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>]
Opis
Polecenie Write-Error
cmdlet deklaruje błąd, który nie kończy się. Domyślnie błędy są wysyłane w strumieniu błędów do programu hosta do wyświetlenia wraz z danymi wyjściowymi.
Aby napisać błąd niepowodujący zakończenia, wprowadź ciąg komunikatu o błędzie, obiekt ErrorRecord lub obiekt Exception . Użyj innych parametrów polecenia , Write-Error
aby wypełnić rekord błędu.
Błędy niepowodujące zakończenia zapisują błąd w strumieniu błędów, ale nie zatrzymują przetwarzania poleceń. Jeśli w kolekcji elementów wejściowych zadeklarowany jest błąd niepowodujący zakończenia, polecenie będzie nadal przetwarzać inne elementy w kolekcji.
Aby zadeklarować błąd zakończenia, użyj słowa kluczowego Throw
.
Aby uzyskać więcej informacji, zobacz about_Throw.
Przykłady
Przykład 1: Zapis błędu dla obiektu RegistryKey
Get-ChildItem | ForEach-Object {
if ($_.GetType().ToString() -eq "Microsoft.Win32.RegistryKey")
{
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_
}
else
{
$_
}
}
To polecenie deklaruje błąd, który nie kończy się, gdy Get-ChildItem
polecenie cmdlet zwraca Microsoft.Win32.RegistryKey
obiekt, taki jak obiekty w HKLM:
HKCU:
lub dyskach dostawcy rejestru programu PowerShell.
Przykład 2. Zapisywanie komunikatu o błędzie w konsoli
Write-Error "Access denied."
To polecenie deklaruje błąd niepowodujący zakończenia i zapisuje błąd "Odmowa dostępu". Polecenie używa parametru Message do określenia komunikatu, ale pomija opcjonalną nazwę parametru Komunikat.
Przykład 3: Zapisywanie błędu w konsoli i określanie kategorii
Write-Error -Message "Error: Too many input values." -Category InvalidArgument
To polecenie deklaruje błąd niepowodujący zakończenia i określa kategorię błędów.
Przykład 4. Zapisywanie błędu przy użyciu obiektu 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."
To polecenie używa obiektu Exception w celu zadeklarowania błędu, który nie kończy się.
Pierwsze polecenie używa tabeli skrótów do utworzenia obiektu System.Exception . Zapisuje obiekt wyjątku w zmiennej $E
. Tabelę skrótów można użyć do utworzenia dowolnego obiektu typu, który ma konstruktor o wartości null.
Drugie polecenie używa Write-Error
polecenia cmdlet do deklarowania błędu, który nie kończy się. Wartość parametru Exception jest obiektem Exception w zmiennej$E
.
Parametry
-Category
Określa kategorię błędu. Wartość domyślna to NotSpecified. Dopuszczalne wartości tego parametru to:
- Nieokreślony
- OpenError
- CloseError
- DeviceError
- DeadlockDetected
- InvalidArgument
- InvalidData
- InvalidOperation
- InvalidResult
- Nieprawidłowy typ
- MetadataError
- Nieimplementowane
- Nieinstalowane
- ObjectNotFound
- OperationStopped
- OperationTimeout
- SkładniaError
- ParserError
- PermissionDenied
- ZasóbBusy
- ResourceExists
- ZasóbDostępny
- ReadError
- WriteError
- FromStdErr
- SecurityError
- ProtocolError
- ConnectionError
- AuthenticationError
- LimitsExceeded
- QuotaExceeded
- NotEnabled
Aby uzyskać informacje o kategoriach błędów, zobacz ErrorCategory, wyliczenie.
Typ: | ErrorCategory |
Dopuszczalne wartości: | 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 |
Domyślna wartość: | NotSpecified |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-CategoryActivity
Określa akcję, która spowodowała błąd.
Typ: | String |
Aliasy: | Activity |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-CategoryReason
Określa, jak lub dlaczego działanie spowodowało błąd.
Typ: | String |
Aliasy: | Reason |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-CategoryTargetName
Określa nazwę obiektu, który był przetwarzany podczas wystąpienia błędu.
Typ: | String |
Aliasy: | TargetName |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-CategoryTargetType
Określa typ obiektu, który był przetwarzany podczas wystąpienia błędu.
Typ: | String |
Aliasy: | TargetType |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-ErrorId
Określa ciąg identyfikatora, aby zidentyfikować błąd. Ciąg powinien być unikatowy dla błędu.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-ErrorRecord
Określa obiekt rekordu błędu, który reprezentuje błąd. Użyj właściwości obiektu, aby opisać błąd.
Aby utworzyć obiekt rekordu błędu, użyj New-Object
polecenia cmdlet lub pobierz obiekt rekordu błędu z tablicy w zmiennej automatycznej $Error
.
Typ: | ErrorRecord |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Exception
Określa obiekt wyjątku, który reprezentuje błąd. Użyj właściwości obiektu, aby opisać błąd.
Aby utworzyć obiekt wyjątku, użyj tabeli skrótu lub użyj New-Object
polecenia cmdlet .
Typ: | Exception |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Message
Określa tekst komunikatu o błędzie. Jeśli tekst zawiera spacje lub znaki specjalne, należy go ująć w cudzysłów. Możesz również przekazać ciąg komunikatu do Write-Error
.
Typ: | String |
Aliasy: | Msg |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-RecommendedAction
Określa akcję, którą użytkownik powinien podjąć, aby rozwiązać problem lub zapobiec temu błędowi.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-TargetObject
Określa obiekt, który był przetwarzany podczas wystąpienia błędu. Wprowadź obiekt, zmienną zawierającą obiekt lub polecenie, które pobiera obiekt.
Typ: | Object |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Możesz przekazać ciąg zawierający komunikat o błędzie do tego polecenia cmdlet.
Dane wyjściowe
None
To polecenie cmdlet nie zwraca żadnych danych wyjściowych. Zapisuje tylko w strumieniu komunikatów o błędzie.
Uwagi
Write-Error
nie zmienia wartości zmiennej automatycznej $?
, dlatego nie sygnalizuje warunku błędu zakończenia. Aby zasygnalizować błąd zakończenia, użyj metody $PSCmdlet.WriteError().