在 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
由于字符串的文字表达式和隐藏的字符串管道,此语法在 PowerShell 中是可能的。上面的几个代码片段等价于下面的示例代码。
示例代码:
"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