将对象写入错误流。

语法

Write-Error -ErrorRecord <ErrorRecord> [-CategoryActivity <string>] [-CategoryReason <string>] [-CategoryTargetName <string>] [-CategoryTargetType <string>] [-RecommendedAction <string>] [<CommonParameters>]

Write-Error [-Message] <string> [-Category {<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>}] [-ErrorId <string>] [-TargetObject <Object>] [-CategoryActivity <string>] [-CategoryReason <string>] [-CategoryTargetName <string>] [-CategoryTargetType <string>] [-RecommendedAction <string>] [<CommonParameters>]

Write-Error -Exception <Exception> [-Category {<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>}] [-ErrorId <string>] [-Message <string>] [-TargetObject <Object>] [-CategoryActivity <string>] [-CategoryReason <string>] [-CategoryTargetName <string>] [-CategoryTargetType <string>] [-RecommendedAction <string>] [<CommonParameters>]

说明

Write-Error cmdlet 将错误写入 Windows PowerShell 错误流。默认情况下,将错误与输出一起发送到主机程序以进行显示。

可以通过提交错误消息字符串 ErrorRecord 对象或 Exception 对象来写入错误。使用 Write-Error 的其他参数可填充错误记录。

参数

-Category <ErrorCategory>

指定错误的类别。默认值为 NotSpecified。

有关错误类别的信息,请参阅 MSDN (Microsoft Developer Network) Library 中的“ErrorCategory 枚举”,网址是 https://go.microsoft.com/fwlink/?LinkId=143600。

是否为必需?

false

位置?

named

默认值

NotSpecified

是否接受管道输入?

false

是否接受通配符?

false

-CategoryActivity <string>

描述导致该错误的操作。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-CategoryReason <string>

说明活动导致出现该错误的方式或原因。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-CategoryTargetName <string>

指定出现错误时正在处理的对象的名称。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-CategoryTargetType <string>

指定出现错误时正在处理的对象的 .NET 类型。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-ErrorId <string>

指定标识错误的 ID 字符串。该字符串对于该错误应该是唯一的。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-ErrorRecord <ErrorRecord>

指定一个错误记录对象,其中包含描述该错误的属性。

若要获取错误记录对象,请使用 New-Object cmdlet 或从 $Error 自动变量中的数组中获取错误记录对象。

是否为必需?

true

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Exception <Exception>

指定表示错误的异常。

您可以使用异常,而无需指定消息文本或异常记录。

是否为必需?

true

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Message <string>

指定错误的消息文本。如果文本包含空格或特殊字符,则使用引号将其括起来。还可以通过管道将消息字符串传递给 Write-Error。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByValue)

是否接受通配符?

false

-RecommendedAction <string>

描述用户应采取的措施以解决或预防该错误。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-TargetObject <Object>

指定出现错误时正在处理的对象。输入对象(如字符串)、包含对象的变量或获取对象的命令。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.String

可以通过管道将包含错误消息的字符串传递给 Write-Error。

输出

Error object

Write-Error 只写入错误流。它不返回任何对象。

示例 1

C:\PS>get-childitem | foreach-object { if ($_.gettype().tostring() -eq "Microsoft.Win32.RegistryKey") {write-error "Out-of-band object" -errorID B1 -targetobject $_ } else {$_ } }

说明
-----------
当 Get-ChildItem cmdlet 返回 Microsoft.Win32.RegistryKey 对象(如 Windows PowerShell Registry 提供程序的 HKLM: 或 HKCU 驱动器中的对象)时,此命令会写入错误。






示例 2

C:\PS>write-error  "Access denied."

说明
-----------
此命令写入“Access denied”错误。此命令使用 Message 参数指定消息,但省略可选的 Message 参数名称。






示例 3

C:\PS>write-error -message "Error: Too many input values." -category InvalidArgument

说明
-----------
此命令写入错误并指定错误类别。






另请参阅




目录