在 PowerShell 中输出信息性消息

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 在 PowerShell 中导出输出简介
  2. PowerShell 中的 Write-Output Cmdlet
  3. PowerShell 中的 Write-HostWrite-Information Cmdlet
  4. PowerShell 中的 Write-Warning Cmdlet
  5. PowerShell 中的 Write-Debug Cmdlet
  6. PowerShell 中的 Write-Error Cmdlet
  7. PowerShell 中的 Write-Verbose Cmdlet
在 PowerShell 中输出信息性消息

将信息性消息写入控制台是任何语言的基本过程,因为它可以正确地向用户提供反馈。但是,在 Windows PowerShell 中有多种打印消息的方法。

本文将区分多个写入命令,例如写入信息、警告和错误消息,并提供我们可以在何时何地使用它们的情况。

在 PowerShell 中导出输出简介

在我们开始讨论不同的写入命令之前,值得注意的是,PowerShell 可以通过用单引号 ('') 或双引号 ("") 将单行括起来来输出消息。

示例代码:

"Hello World!"
'Hello World'

输出:

Hello World!
Hello World

由于字符串的文字表达式和隐藏的字符串管道,此语法在 PowerShell 中是可能的。上面的几个代码片段等价于下面的示例代码。

示例代码:

"Hello World!" | Out-Host

Out-Host 命令发送前面的对象以在控制台上显示。

PowerShell 中的 Write-Output Cmdlet

第一种打印方法是 Write-Output 命令。此 cmdlet 是 PowerShell 脚本环境中所有打印方法的最基本语法。

我们可以将其等同于许多不同语言的基本打印方法,例如 printstdout

示例代码:

Write-Output "Hello World!"

输出:

Hello World!

PowerShell 中的 Write-HostWrite-Information Cmdlet

Write-Host 命令是另一种打印方法,类似于以前的方式 Write-Output

此命令在 PowerShell 5.0 中更新之前的唯一区别是该方法只能使用参数 -BackgroundColor-ForegroundColor 输出具有不同颜色的消息。

如前所述,从 Windows PowerShell 5.0 开始,Write-Host 现在是 Write-Information 的包装器。这允许我们使用 Write-Host 将输出发送到信息流。

此 cmdlet 可以抑制或捕获使用 Write-Host 命令写入的数据,同时保持向后兼容性。

$InformationPreference 首选项变量和 -InformationAction 标准参数不影响 Write-Host 消息。该规则的例外是
-InformationAction Ignore,有效抑制 Write-Host 输出。

使用 Write-HostWrite-information 写入信息流不会对你的输出字符串造成问题。

如果我们使用 -InformationAction 参数,我们还可以操纵信息流的可见性,前提是我们还将给定的参数值绑定到函数中的 Write-Host 语句。

例如,下面的示例将默认禁用信息流,除非通过 -InformationAction 参数另行请求。

Write-Host 'This is a test message' -InformationAction $InformationPreference -ForegroundColor Green

PowerShell 中的 Write-Warning Cmdlet

Write-Warning 命令将警告消息写入 Windows PowerShell 主机。对警告事件的响应取决于用户的 $WarningPreference 变量和 -WarningAction 标准参数的值。

$WarningPreference 变量的有效值如下。

  1. Stop - 显示警告和错误消息,然后停止执行。
  2. Inquire - 显示警告消息并以确认消息的形式提示用户允许继续。
  3. Continue - 变量的默认值。显示警告消息,然后执行它。
  4. SilentlyContinue - 不显示警告信息。继续执行。

示例代码:

Write-Warning "This is only a test warning notification." -WarningAction Continue

PowerShell 中的 Write-Debug Cmdlet

Write-Debug 命令也是在 PowerShell 中打印的另一种方法。但是,这通常在开发中更多地用于在脚本环境中打印调试消息。

默认情况下不显示调试消息,但可以使用 $debugPreference 变量进行更改。

示例代码:

Write-Debug "Error on line 1. Please investigate."
$debugPreference = "Continue"
Write-Debug "Error on line 5. Please investigate."

输出:

DEBUG: Error on line 5. Please investigate.

PowerShell 中的 Write-Error Cmdlet

Write-Error 命令输出一个非终止错误。默认情况下,错误会在错误流中发送到 PowerShell 主机程序,以便与输出一起导出。

要输出非终止错误,请输入错误消息字符串、ErrorRecord 对象或 Exception 对象。然后,使用 Write-Error 的不同参数来填充我们将导出的错误记录。

非终止错误会将错误写入错误流,但不会停止命令处理。例如,如果在一组输入项中的一项上引发非终止错误,则 cmdlet 将继续处理其他项。

示例代码:

Write-Error "Invalid object" -ErrorId B1 -TargetObject $_

输出:

Write-Error "Invalid object" -ErrorId B1 -TargetObject $_ : Invalid object
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : B1

PowerShell 中的 Write-Verbose Cmdlet

Write-Verbose 命令将文本写入 PowerShell 中的详细消息流。

Write-Debug 命令一样,默认情况下不显示详细消息,但可以使用变量 $VerbosePreference 或添加开关参数 -Verbose 显示。

示例代码:

Write-Verbose -Message "This will not be displayed."
Write-Verbose -Message "This will be displayed" -Verbose

输出:

VERBOSE: This will be displayed
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn