熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

PowerShell中Write族cmdlet的介紹和使用

2013-11-13 10:12:24  來源: .NET編程 
Write相關的命令大都是和宿主相互交互的例如輸出調試信息輸出錯誤對象顯示進度信息控制輸出效果等
 
  在很多時候我們希望能夠將一些信息以特殊的顏色或背景色輸出在PowerShell的控制台中我們可以使用WriteHost命令來實現這個功能參數ForegroundColor用於指定字體顏色BackgroundColor用於指定背景的顏色例如
  PS C:\> WriteHost BackgroundColor Black ForegroundColor Red Hello World!
Hello World!

  如果你記不住有哪些顏色該怎麼辦呢?很簡單只需要在該參數後面輸入一個不存在的顏色即可例如
 PS C:\> WriteHost BackgroundColor NoSuchColor
WriteHost : Cannot bind parameter BackgroundColor Cannot convert value NoSuchColor to type SystemConsoleColor
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: char:
+ WriteHost BackgroundColor  <<<< NoSuchColor
  我們可以看到PowerShell的錯誤提示信息已經包含該參數的所有合法取值利用這個辦法在很多時候都可以避免去查看手冊或查閱其他資料來確定參數所支持的值
 
  WriteDebugWriteWarning和WriteVerbose是三個非常類似的命令它們都是向控制台輸出一條消息它們主要為了腳本編寫者能夠更加靈活的控制輸出傳統的shell和腳本語言經常通過向屏幕打印一些調試信息來幫助編寫者排除腳本的錯誤PowerShell雖然提供了強大的調試功能還通過提供WriteDebug為大家保留了利用打印消息來調試這一經典方法的功能
 
  在進行拷貝操作時如果某個已經存在的話可能並不希望停止拷貝操作但是期待著PowerShell能夠提供一個警告信息此時使用WriteVerbose如果使用過壓縮類軟件的話我們可能會關心壓縮的時候究竟哪些文件被打包了這時候我們往往希望一個程序執行時線程更加詳細的消息我們可以利用WriteVerbose來達成這個目的
 
  這幾個Write命令實際使用頻率不高 因此我將它們放到以後專門介紹如何編寫健壯的腳本章節中
 
  如果您正在編寫一個拷貝文件或執行安裝的腳本提供一個進度條將會使用戶再等待腳本執行時獲得更好的體驗PowerShell的設計人員已經為我們想到了這些細節可以使用WriteProgress來完成這樣的操作
 
  讓我們來看一個最簡單的進度條模型
     PS C:\> for ($i = ; $i lt ; $i++) { WriteProgress Activity Learning PowerShell Status Percentage: $i PercentComplete $i; StartSleep Milliseconds }
你將會在屏幕上看到

  Learning PowerShell
     Percentage:
     [ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo                                           ]

  我們使用參數Activity來為整個的進度條設置一個名稱(活動的名稱)這裡我們定義為Learing PowerShell參數Status用於指示在整個過程中當前執行的狀態這裡我們簡單的提示了當前完成的百分比

From:http://tw.wingwit.com/Article/program/net/201311/12893.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.