如何在 PowerShell 中输出信息消息

  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

由于字符串的字面表达和隐藏字符串管道,上述多个代码片段等价于下面的示例代码。

示例代码:

"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
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
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