如何在 PowerShell 中输出信息消息
- PowerShell 中输出导出简介
-
PowerShell 中的
Write-Output
Cmdlet -
PowerShell 中的
Write-Host
和Write-Information
Cmdlet -
PowerShell 中的
Write-Warning
Cmdlet -
PowerShell 中的
Write-Debug
Cmdlet -
PowerShell 中的
Write-Error
Cmdlet -
PowerShell 中的
Write-Verbose
Cmdlet

在任何语言中,向控制台写入信息消息是一个基本过程,因为它正确地向用户提供反馈。然而,在 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 脚本环境中所有打印方法的最基本语法。
我们可以将其等同于许多不同语言的基本打印方法,如 print
和 stdout
。
示例代码:
Write-Output "Hello World!"
输出:
Hello World!
PowerShell 中的 Write-Host
和 Write-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-Host
或 Write-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
变量的有效值如下。
Stop
- 显示警告和错误消息,然后停止执行。Inquire
- 显示警告消息并提示用户以确认消息的形式继续。Continue
- 该变量的默认值。显示警告消息并继续执行。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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn