我我的不多用到Linux/Unix 操做系統. 對於很多Linux/Unix管理員在系統任務操做Shell一直保持很難理解. 後來從朋友公司據說他們測試隊伍中專門保留了一個腳本Scirpt Shell 測試小組. 我一時更納悶了. 固然這個問題知道我碰到Windows PowerShell-Windows出的一套Shell工具後 才漸漸理解.sql
Windows PowerShell是微軟爲Windows系統開發的Shell及腳本語言技術,它是一種新的命令行外殼和腳本語言,用於實現系統自動化管理。它的出現彌補了與Linux/Unix系統相比Windows在Shell方面的不足,這也就不難理解爲何微軟從2004起一直在作方面努力 相繼推出兩個版本1.0/2.0 ,這兩個版本的連續發佈能夠看出微軟公司在馬力十足的不斷開發PowerShell,同時也爲程序開發人員提供了一種更高效的編寫腳本的工具,shell
Windows 7和Windows Server 2008 R2中已經整合了PowerShell 2.0: Windows 7下集成路徑在附件中:編程
Windows PowerShell創建在.NET Framework 2.0/3.x的基礎上, 和.NET公共語言運行時(CLR)和.NET框架上,它內部創建一個通訊管道專門用來接受並返回.NET對象.網絡
對腳本編程接觸較少,今天將採用幾個實際事例來驗證Windows PowerShell(2.0) 對.NET對象的內部支持.框架
在進行驗證以前. 咱們有必要有一個好的編譯工具.俗話說」公慾善其事必先利其器.」如今的Windows PowerShell已經發布到2.0版本 ,在Windows 7已經集成. 可是集成自帶的圖形操做界面ISE工具 . 整體給我感受功能太多於單一. 沒有字體調整. 沒有詳細調試執行信息提示界面.對>NET對象API沒有提示界面. 咱們須要一個更好用的工具——PowerShellAnalyzer ide
打開界面:工具
如今EditPlus和UltraEdit都已經出了powershell的語法文件,可是對Shell腳本編程功能更強的IDE只能算是PowerShellAnalyzer,用了N多第三方控件, 在2009年6月份只能45天試用,如今已經所有免費開放這款強大的Shell腳本的IDE工具. 也是微軟官方推薦第三方工具的首選.測試
下載地址: Shell Tools——PowerShellAnalyzer-Tool字體
目前採用Shell版本是2.0, 請確認本機.NET的環境在2.0/3.5版本上. Shell直接集成與。Net CLR 之上. 這就爲了咱們直接在Shell腳本中建立.NET對象提供了可能.powershell能夠很方便的使用.net的類庫。使用 New-Object 能夠實例化一個.net類. 例如咱們常在網頁操做文件下載. 咱們一樣能夠直接Shell腳本用簡短几行代碼 快速實現對固定連接文件本地下載:ui
- $getobject = New-Object Net.WebClient
- $downloadurl = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'
- $storepath = "$home\LocalStroeFile.zip"
- $getobject.DownloadFile($downloadurl, $storepath )
下載成功. 可是整個過程沒有任何提示.並且下載時間是相對於本身網絡環境而言有很大影響. 咱們是否有必要作一個下載進度條來顯示下載的文件整體進度.不過很遺憾,簡單的DownloadFile ( )方法沒有提供下載進度條控制. 可是VBScript中有一個方法偏偏在空間ServerComputer.Network下提供了下載進度條控制方法:
- [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
- $url = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'
- $local = "$home\powershellworkshop.zip"
- $object = New-Object Microsoft.VisualBasic.Devices.Network
- $object.DownloadFile($url, $local, '', '', $true, 500, $true, 'DoNothing')
如今加載Microsoft.VisualBasic.Devices.Network 空間. New出對象,後. DownLoadFile方法參數對比:
DownloadFile 方法 (Uri, String, String, String, Boolean, Int32, Boolean, UICancelOption)