[玩转系统] 了解 PowerShell 写入主机 Cmdlet
作者:精品下载站 日期:2024-12-14 13:03:30 浏览:14 分类:玩电脑
了解 PowerShell 写入主机 Cmdlet
多年来,围绕 PowerShell Write-Host
cmdlet 是否需要使用它存在很多争论。与大多数情况一样,答案是可能的,并且取决于您的需求。
要了解 Write-Host
以及何时使用它,让我们快速探索 Write-Host
的历史,并了解如何最好地使用这个有用的 cmdlet。
PowerShell Write-Host 的现代使用
通常,在脚本或 PowerShell 函数中,您需要将有关正在发生的情况的信息转换为用户,这些信息是信息性的且与函数的输出不直接相关。
为什么我们说现代使用Write-Host
?在 PowerShell 5.x 之前,Write-Host
未绑定到流(例如成功、错误或警告流)。因此不鼓励使用它,因为它不像其他输出类型那样可控。
让我们以这个简单的脚本示例为例,它向用户提供一些有关脚本处理时间的信息。
Write-Host "Starting the gathering of information, be patient, this could take a while!"
Write-Host "- Gathering Process`r`n- Gathering Files`r`n- Gathering Users"
Write-Output "Display the information here..."
Write-Host "Information Gathering Complete!"
您会注意到,这只是将信息输出到主机,脚本的最终用户可以利用这些信息做出进一步的决策。您可能会发现自己在询问管道内容。
如果您将对象从一个 cmdlet 或函数发送到另一个 cmdlet 或函数,但仍想显示信息性消息,您可以这样做吗?值得庆幸的是,PowerShell 的 Write-Host
cmdlet 不会影响管道输出!下面让我们展示一下它是如何工作的。
Function Get-Information {
Write-Host "Starting the gathering of information, be patient, this could take a while!`r`n"
Write-Host "- Gathering Data`r`n- Returning Data`r`n"
[PSCustomObject]@{
"Test1" = "Value1"
"Test2" = "Value2"
}
Write-Host "Information Gathering Complete!"
}
Function Convert-Information {
Param(
[Parameter(ValueFromPipeline=$true)]$Param
)
$Param | ConvertTo-JSON
}
如果将 Get-Information
的输出通过管道传输到 Convert-Information
,它将不会考虑任何语句,并且仅对 PSCustomObject
进行操作> 即输出。
设置消息格式以提高可读性
Write-Host 的另一个非常有用的方面是格式化颜色和输出的能力。由于这可以提高可读性,因此可以极大地帮助 PowerShell 脚本用户了解正在发生的情况以及何时需要采取操作。
-ForegroundColor
- 信息文本的颜色。-BackgroundColor
- 文本后面的背景颜色。-Separator
- 对于输出Write-Host
的对象,请使用提供的分隔符而不是空格。这可以是回车符和换行符,例如"
rn"
。-NoNewLine
- 不要在输出末尾输出换行符。
让我们探讨如何利用各种格式参数构建有用的信息消息。在下面的代码中,我们正在构造一条有关数组结果数量的信息消息,并应用格式设置以使其更易于查看。
可以将多个对象传递给 Write-Host
来显示,如下所示。通常,脚本编写者会用空格分隔这些消息,但使用分隔符参数,您可以控制这些消息如何输出到控制台。
$Array = @(1,2,3,4,5)
Write-Host "Results Count:" -BackgroundColor DarkBlue -ForegroundColor White -NoNewline
Write-Host "" $Array.Count "Items`r`n" -ForegroundColor Red
Write-Host $Array -Separator "`r`n"
Write-Host "" "End of results." -ForegroundColor Green -Separator "`r`n"
通过使用颜色、换行符和分隔符输出控制输出,我们可以制作一条有用的消息,向用户提供有关脚本的信息。此场景的一个示例是当您创建信息菜单以及其他用例时。
重定向 Write-Host
流输出
由于 Write-Host 现在可以通过流输出进行控制,因此有几种方法可以控制和重定向输出。 InformationAction
首选项在一定程度上与 Write-Host
消息一起考虑。 -InformationAction Ignore
将有效抑制 Write-Host
消息,但 $InformationPreference
和 InformationAction
参数不会影响Write-Host
cmdlet。
您是否知道 Write-Host
只是 Write-Information
cmdlet 的包装器?这使得Write-Host
的输出能够包含在信息流中。这意味着您可以使用信息流修改 Write-Host
消息的去向。
话虽这么说,您仍然可以使用重定向运算符将 Write-Host
消息的输出重定向到不同的流。例如,将所有 Write-Host
消息输出到日志文件。采用与上面相同的示例,让我们将所有输出重定向到日志文件。
Write-Host "Results Count:" -BackgroundColor DarkBlue -ForegroundColor White -NoNewline 6>> .\log.txt
Write-Host "" $Array.Count "Items`r`n" -ForegroundColor Red 6>> .\log.txt
Write-Host $Array -Separator "`r`n" 6>> .\log.txt
Write-Host "" "End of results." -ForegroundColor Green -Separator "`r`n" 6>> .\log.txt
如您所见,PowerShell 现在将输出重定向到日志,但格式可能不完全符合您的预期。这是因为 -NoNewLine
参数并没有得到真正的尊重,因为它主要是一个主机格式化工具。这可能不是什么大问题,但在重定向流输出时需要记住这一点。
结论
随着 PowerShell 5.x 及更高版本的更改,当您需要向用户显示信息性消息时,完全允许使用并鼓励使用 Write-Host
。由于 PowerShell 用户对信息性消息具有与输出或详细消息相同的必要级别的控制,因此鼓励使用 Write-Host
或 Write-Information
并建议在必要时使用。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[短剧] 2025年05月31日 精选+付费短剧推荐58部
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag