Board logo

标题: [转载教程] [PowerShell教程][07]PowerShell中Write族cmdlet的介绍和使用 [打印本页]

作者: wankoilz    时间: 2011-5-22 10:17     标题: [PowerShell教程][07]PowerShell中Write族cmdlet的介绍和使用

[PowerShell教程][01]初识PowerShellhttp://bbs.bathome.net/thread-12415-1-1.html
[PowerShell教程][02]PowerShell基础知识之一http://bbs.bathome.net/thread-12416-1-1.html
[PowerShell教程][03]PowerShell数据类型之整型http://bbs.bathome.net/thread-12417-1-1.html
[PowerShell教程][04]PowerShell面向对象基础之一http://bbs.bathome.net/thread-12418-1-1.html
[PowerShell教程][05]PowerShell面向对象基础之二http://bbs.bathome.net/thread-12419-1-1.html
[PowerShell教程][06]PowerShell中格式化命令和输出命令http://bbs.bathome.net/thread-12420-1-1.html
[PowerShell教程][07]PowerShell中Write族cmdlet的介绍和使用http://bbs.bathome.net/thread-12421-1-1.html
[PowerShell教程][08]字符串字面值http://bbs.bathome.net/thread-12422-1-1.html
[PowerShell教程][09]PowerShell中的数组使用http://bbs.bathome.net/thread-12423-1-1.html
[PowerShell教程][10]PowerShell中的HashTable的使用http://bbs.bathome.net/thread-12424-1-1.html
[PowerShell教程][11]PowerShell中的加法运算http://bbs.bathome.net/thread-12425-1-1.html

说明:教程转自 http://bbs.winos.cn/thread-35543-1-1.html


作者: Edengundam(马涛)


Write相关的命令大都是和宿主相互交互的,例如:输出调试信息、输出错误对象、显示进度信息、控制输出效果等。

在很多时候,我们希望能够将一些信息以特殊的颜色或背景色输出。在PowerShell的控制台中,我们可以使用Write-Host命令来实现这个功能。参数ForegroundColor用于指定字体颜色,BackgroundColor用于指定背景的颜色。例如:
  1. PS C:\> Write-Host -BackgroundColor Black -ForegroundColor Red “Hello World!”
  2. Hello World!
复制代码
如果你记不住有哪些颜色该怎么办呢?很简单,只需要在该参数后面输入一个不存在的颜色即可,例如:
  1. PS C:\> Write-Host -BackgroundColor NoSuchColor
  2. Write-Host : Cannot bind parameter 'BackgroundColor'. Cannot convert value "NoSuchColor" to type "System.ConsoleColor"
  3. due to invalid enumeration values. Specify one of the following enumeration values and try again. The possible enumerat
  4. ion values are "Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta, DarkYellow, Gray, DarkGray, Blue, Green, Cy
  5. an, Red, Magenta, Yellow, White".
  6. At line:1 char:28
  7. + Write-Host -BackgroundColor  <<<< NoSuchColor
复制代码
我们可以看到PowerShell的错误提示信息已经包含该参数的所有合法取值。利用这个办法,在很多时候,都可以避免去查看手册或查阅其他资料来确定参数所支持的值。

Write-Debug、Write-Warning和Write-Verbose是三个非常类似的命令,它们都是向控制台输出一条消息,它们主要为了脚本编写者能够更加灵活的控制输出。传统的shell和脚本语言,经常通过向屏幕打印一些调试信息来帮助编写者排除脚本的错误。PowerShell虽然提供了强大的调试功能,还通过提供Write-Debug为大家保留了利用打印消息来调试这一经典方法的功能。

在进行拷贝操作时,如果某个已经存在的话,可能并不希望停止拷贝操作,但是期待着PowerShell能够提供一个警告信息。此时使用Write-Verbose
如果使用过压缩类软件的话,我们可能会关心压缩的时候,究竟哪些文件被打包了,这时候我们往往希望一个程序执行时,线程更加详细的消息。我们可以利用Write-Verbose来达成这个目的。
这几个Write命令实际使用频率不高, 因此我将它们放到以后专门介绍如何编写健壮的脚本章节中.

如果,您正在编写一个拷贝文件或执行安装的脚本,提供一个进度条将会使用户再等待脚本执行时获得更好的体验。PowerShell的设计人员已经为我们想到了这些细节,可以使用Write-Progress来完成这样的操作。
让我们来看一个最简单的进度条模型:
  1. PS C:\> for ($i = 0; $i -lt 100; $i++) { Write-Progress -Activity "Learning PowerShell" -Status "Percentage: $i" -PercentComplete $i; Start-Sleep -Milliseconds 50 }
复制代码
你将会在屏幕上看到
  1. Learning PowerShell
  2.     Percentage: 61[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
复制代码
我们使用参数-Activity来为整个的进度条设置一个名称(活动的名称),这里我们定义为“Learing PowerShell”,参数-Status用于指示在整个过程中,当前执行的状态,这里我们简单的提示了当前完成的百分比。

今天就这么多了, 希望大家回去自己看看Get-Help获得的帮助信息. 每个命令都有些例子, 大家仔细学习一下.




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2