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() 方法。