当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Write-Error (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:02:30 浏览:13 分类:玩电脑

Write-Error (Microsoft.PowerShell.Utility)


Write-Error

模块 :Microsoft.PowerShell.Utility

将对象写入错误流。

句法

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>]

描述

Write-Error cmdlet 声明一个非终止错误。默认情况下,错误以错误流的形式发送到主机程序以与输出一起显示。

要编写非终止错误,请输入错误消息字符串、ErrorRecord 对象或Exception 对象。使用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 对象(例如 HKLM: 中的对象)时,此命令声明非终止错误code> 或 HKCU: PowerShell 注册表提供程序的驱动器。

示例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."

此命令使用Exception对象来声明非终止错误。

第一个命令使用哈希表创建 System.Exception 对象。它将异常对象保存在 $E 变量中。您可以使用哈希表创建任何具有 null 构造函数的类型的对象。

第二个命令使用 Write-Error cmdlet 声明非终止错误。 Exception 参数的值是 $E 变量中的 Exception 对象。

参数

-Category

指定错误的类别。默认值为未指定。该参数可接受的值为:

  • NotSpecified
  • OpenError
  • CloseError
  • DeviceError
  • DeadlockDetected
  • InvalidArgument
  • InvalidData
  • InvalidOperation
  • InvalidResult
  • InvalidType
  • MetadataError
  • NotImplemented
  • NotInstalled
  • 未找到对象
  • OperationStopped
  • OperationTimeout
  • SyntaxError
  • ParserError
  • PermissionDenied
  • ResourceBusy
  • ResourceExists
  • ResourceUnavailable
  • ReadError
  • WriteError
  • 来自标准错误
  • SecurityError
  • ProtocolError
  • ConnectionError
  • AuthenticationError
  • LimitsExceeded
  • QuotaExceeded
  • NotEnabled

有关错误类别的信息,请参阅ErrorCategory 枚举。

类型 :

ErrorCategory

接受的值:

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、安全错误、协议错误、连接错误、身份验证错误、限制超出、配额超出、未启用

位置:

命名

默认值:

NotSpecified

必需的:

False

接受管道输入:

False

接受通配符:

False

-CategoryActivity

指定导致错误的操作。

类型 :

String

别名:

Activity

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-CategoryReason

指定活动如何或为何导致错误。

类型 :

String

别名:

Reason

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-CategoryTargetName

指定发生错误时正在处理的对象的名称。

类型 :

String

别名:

TargetName

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-CategoryTargetType

指定发生错误时正在处理的对象的类型。

类型 :

String

别名:

TargetType

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-ErrorId

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

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-ErrorRecord

指定表示错误的错误记录对象。使用对象的属性来描述错误。

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

类型 :

ErrorRecord

位置:

0

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

-Exception

指定表示错误的异常对象。使用对象的属性来描述错误。

要创建异常对象,请使用哈希表或使用 New-Object cmdlet。

类型 :

例外

位置:

0

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

-Message

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

类型 :

String

别名:

Msg

位置:

0

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-RecommendedAction

指定用户应采取的解决或防止错误的操作。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-TargetObject

指定发生错误时正在处理的对象。输入对象、包含对象的变量或获取对象的命令。

类型 :

目的

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

字符串

您可以通过管道将包含错误消息的字符串传递给此 cmdlet。

输出

此 cmdlet 不返回任何输出。它仅写入错误消息流。

笔记

Write-Error 不会更改 $? 自动变量的值,因此它不会发出终止错误条件信号。要发出终止错误信号,请使用 $PSCmdlet.WriteError() 方法。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯