将对象写入错误流。
语法
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 说明 ----------- 此命令写入错误并指定错误类别。
另请参阅