Write-Error
将对象写入错误流。
语法
NoException (默认值)
Write-Error
[-Message] <string>
[-Category <ErrorCategory>]
[-ErrorId <string>]
[-TargetObject <Object>]
[-RecommendedAction <string>]
[-CategoryActivity <string>]
[-CategoryReason <string>]
[-CategoryTargetName <string>]
[-CategoryTargetType <string>]
[<CommonParameters>]
WithException
Write-Error
[-Exception] <Exception>
[-Message <string>]
[-Category <ErrorCategory>]
[-ErrorId <string>]
[-TargetObject <Object>]
[-RecommendedAction <string>]
[-CategoryActivity <string>]
[-CategoryReason <string>]
[-CategoryTargetName <string>]
[-CategoryTargetType <string>]
[<CommonParameters>]
ErrorRecord
Write-Error
[-ErrorRecord] <ErrorRecord>
[-RecommendedAction <string>]
[-CategoryActivity <string>]
[-CategoryReason <string>]
[-CategoryTargetName <string>]
[-CategoryTargetType <string>]
[<CommonParameters>]
说明
Write-Error
cmdlet 声明非终止错误。 默认情况下,错误流中将错误发送到要显示的主机程序以及输出。
若要写入非终止错误,请输入错误消息字符串、ErrorRecord 对象或 异常 对象。 使用 Write-Error
的其他参数填充错误记录。
非终止错误将错误写入错误流,但它们不会停止命令处理。 如果在输入项集合中的一项上声明了非终止错误,该命令将继续处理集合中的其他项。
若要声明终止错误,请使用 throw
关键字。
有关详细信息,请参阅 about_Throw。
示例
示例 1:编写 RegistryKey 对象的错误
Get-ChildItem | ForEach-Object {
if ($_.GetType().ToString() -eq "Microsoft.Win32.RegistryKey")
{
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_
}
else
{
$_
}
}
此命令在 Get-ChildItem
cmdlet 返回 Microsoft.Win32.RegistryKey
对象(例如 PowerShell 注册表提供程序的 HKLM:
或 HKCU:
驱动器中的对象)时声明非终止错误。
示例 2:将错误消息写入控制台
Write-Error "Access denied."
此命令声明非终止错误并写入“拒绝访问”错误。 该命令使用 Message 参数指定消息,但省略可选的 Message 参数名称。
示例 3:将错误写入控制台并指定类别
Write-Error -Message "Error: Too many input values." -Category InvalidArgument
此命令声明非终止错误并指定错误类别。
示例 4:使用 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."
此命令使用 异常 对象声明非终止错误。
第一个命令使用哈希表创建 System.Exception 对象。 它将异常对象保存在 $E
变量中。 可以使用哈希表创建具有 null 构造函数的类型的任何对象。
第二个命令使用 Write-Error
cmdlet 声明非终止错误。
Exception 参数的值是 变量中的 $E
对象。
参数
-Category
指定错误的类别。 默认值 NotSpecified。 此参数的可接受值为:
- 未指定
- OpenError
- CloseError
- DeviceError
- DeadlockDetected
- InvalidArgument
- 数据无效
- 无效操作
- 无效结果
- 无效类型
- 元数据错误
- 未实现
- 未安装
- ObjectNotFound 对象
- 作已停止
- 作超时
- 语法错误
- 解析错误
- 权限被拒绝
- 资源繁忙
- 资源存在
- 资源不可用
- 读取错误
- WriteError (写入错误)
- FromStdErr
- SecurityError 安全错误
- ProtocolError
- ConnectionError
- AuthenticationError
- 超出限制
- QuotaExceeded
- NotEnabled
有关错误类别的信息,请参阅 ErrorCategory 枚举。
参数属性
类型: | ErrorCategory |
默认值: | NotSpecified |
接受的值: | 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 |
支持通配符: | False |
不显示: | False |
参数集
NoException
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
WithException
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-CategoryActivity
指定导致错误的操作。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
别名: | 活动 |
参数集
(All)
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-CategoryReason
指定活动导致错误的方式或原因。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
别名: | 原因 |
参数集
(All)
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-CategoryTargetName
指定发生错误时正在处理的对象的名称。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
别名: | 目标名称 |
参数集
(All)
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-CategoryTargetType
指定发生错误时正在处理的对象的类型。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
别名: | 目标类型 |
参数集
(All)
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-ErrorId
指定要标识错误的 ID 字符串。 该字符串应对错误是唯一的。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
参数集
NoException
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
WithException
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-ErrorRecord
指定表示错误的错误记录对象。 使用对象的属性描述错误。
若要创建错误记录对象,请使用 New-Object
cmdlet 或从 $Error
自动变量中的数组获取错误记录对象。
参数属性
类型: | ErrorRecord |
默认值: | None |
支持通配符: | False |
不显示: | False |
参数集
ErrorRecord
Position: | 0 |
必需: | True |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-Exception
指定表示错误的异常对象。 使用对象的属性描述错误。
若要创建异常对象,请使用哈希表或使用 New-Object
cmdlet。
参数属性
类型: | Exception |
默认值: | None |
支持通配符: | False |
不显示: | False |
参数集
WithException
Position: | 0 |
必需: | True |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-Message
指定错误的消息文本。 如果文本包含空格或特殊字符,请用引号将其括起来。 还可以通过管道将消息字符串传递给 Write-Error
。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
别名: | 味精 |
参数集
NoException
Position: | 0 |
必需: | True |
来自管道的值: | True |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
WithException
Position: | 0 |
必需: | False |
来自管道的值: | True |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-RecommendedAction
指定用户应采取的解决或阻止错误的操作。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
参数集
(All)
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
-TargetObject
指定发生错误时正在处理的对象。 输入对象、包含对象的变量或获取对象的命令。
参数属性
类型: | Object |
默认值: | None |
支持通配符: | False |
不显示: | False |
参数集
NoException
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
WithException
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
String
可以通过管道将包含错误消息的字符串传递给此 cmdlet。
输出
None
此 cmdlet 不返回任何输出。 它只写入错误消息流。
备注
Write-Error
不会更改 $?
自动变量的值,因此它不会发出终止错误条件的信号。 若要发出终止错误的信号,请使用 $PSCmdlet.WriteError() 方法。