Write相关的命令大都是和宿主相互交互的,例如:输出调试信息、输出错误对象、显示进度信息、控制输出效果等。
在很多时候,我们希望能够将一些信息以特殊的颜色或背景色输出。在PowerShell的控制台中,我们可以使用Write-Host命令来实现这个功能。参数ForegroundColor用于指定字体颜色,BackgroundColor用于指定背景的颜色。例如:
PS C:\> Write-Host -BackgroundColor Black -ForegroundColor Red “Hello World!”
Hello World!
如果你记不住有哪些颜色该怎么办呢?很简单,只需要在该参数后面输入一个不存在的颜色即可,例如:
PS C:\> Write-Host -BackgroundColor NoSuchColor Write-Host : Cannot bind parameter ''BackgroundColor''. Cannot convert value "NoSuchColor" to type "System.ConsoleColor" due to invalid enumeration values. Specify one of the following enumeration values and try again. The possible enumerat ion values are "Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta, DarkYellow, Gray, DarkGray, Blue, Green, Cy an, Red, Magenta, Yellow, White". At line:1 char:28 + Write-Host -BackgroundColor <<<< NoSuchColor |
我们可以看到PowerShell的错误提示信息已经包含该参数的所有合法取值。利用这个办法,在很多时候,都可以避免去查看手册或查阅其他
资料来确定参数所支持的值。
Write-Debug、Write-Warning和Write-Verbose是三个非常类似的命令,它们都是向控制台输出一条消息,它们主要为了脚本编写者能够更加灵活的控制输出。传统的shell和脚本语言,经常通过向屏幕打印一些调试信息来帮助编写者排除脚本的错误。PowerShell虽然提供了强大的调试功能,还通过提供Write-Debug为大家保留了利用打印消息来调试这一经典方法的功能。
在进行拷贝操作时,如果某个已经存在的话,可能并不希望停止拷贝操作,但是期待着PowerShell能够提供一个警告信息。此时使用Write-Verbose.如果使用过压缩类软件的话,我们可能会关心压缩的时候,究竟哪些文件被打包了,这时候我们往往希望一个
程序执行时,线程更加详细的消息。我们可以利用Write-Verbose来达成这个目的。
这几个Write命令实际使用频率不高, 因此我将它们放到以后专门介绍如何编写健壮的脚本章节中。
如果,您正在编写一个拷贝文件或执行安装的脚本,提供一个进度条将会使用户再等待脚本执行时获得更好的体验。PowerShell的设计人员已经为我们想到了这些细节,可以使用Write-Progress来完成这样的操作。
让我们来看一个最简单的进度条模型:
PS C:\> for ($i = 0; $i -lt 100; $i++) { Write-Progress -Activity "Learning PowerShell" -Status "Percentage: $i" -PercentComplete $i; Start-Sleep -Milliseconds 50 }
你将会在屏幕上看到:
Learning PowerShell
Percentage: 61
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ]
我们使用参数-Activity来为整个的进度条设置一个名称(活动的名称),这里我们定义为“Learing PowerShell