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 cmdlet Write-Error
deklaruje błąd bez zakończenia. 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 bez zakończenia, wprowadź ciąg komunikatu o błędzie, obiekt ErrorRecord lub obiekt Exception. Użyj innych parametrów 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 polecenie cmdlet Get-ChildItem
zwraca obiekt Microsoft.Win32.RegistryKey
, taki jak obiekty w HKLM:
lub HKCU:
dysków 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 w celu określenia komunikatu, ale pomija opcjonalną nazwę parametru Message.
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 wyjątku do deklarowania 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 polecenia cmdlet Write-Error
do deklarowania błędu bez zakończenia. Wartość parametru wyjątku 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
- QuotaExceed
- NotEnabled
Aby uzyskać informacje o kategoriach błędów, zobacz ErrorCategory Enumeration.
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 polecenia cmdlet New-Object
lub uzyskaj obiekt rekordu błędu z tablicy w zmiennej automatycznej $Error
.
Typ: | ErrorRecord |
Position: | 0 |
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ótów lub użyj polecenia cmdlet New-Object
.
Typ: | Exception |
Position: | 0 |
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().