Windows PowerShell初體驗——.NET對象支持

我我的不多用到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對象的內部支持.框架

<1>準備工做

在進行驗證以前. 咱們有必要有一個好的編譯工具.俗話說」公慾善其事必先利其器.」如今的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字體

<2>驗證Shell——.NET對象支持

目前採用Shell版本是2.0, 請確認本機.NET的環境在2.0/3.5版本上. Shell直接集成與。Net CLR 之上. 這就爲了咱們直接在Shell腳本中建立.NET對象提供了可能.powershell能夠很方便的使用.net的類庫。使用 New-Object 能夠實例化一個.net類. 例如咱們常在網頁操做文件下載. 咱們一樣能夠直接Shell腳本用簡短几行代碼 快速實現對固定連接文件本地下載:ui

  
  
  
  
  1. $getobject = New-Object Net.WebClient   
  2. $downloadurl = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar' 
  3. $storepath = "$home\LocalStroeFile.zip" 
  4. $getobject.DownloadFile($downloadurl, $storepath )  
經過New-Object 命令 新建一個NET.WebClient類 用來實現下載操做.  $downloadurl指定的是一個下載文件路徑. 問了演示目的當前指定文件大小隻有756KB.  $storepath存在在本地的路徑. $home相似Web頁面表達式同樣在Shell腳本中自動解析到當前用戶文件夾下. 最後直接調用WebClient類DownLoad方法實現對文件下載.下載結果:

下載成功. 可是整個過程沒有任何提示.並且下載時間是相對於本身網絡環境而言有很大影響. 咱們是否有必要作一個下載進度條來顯示下載的文件整體進度.不過很遺憾,簡單的DownloadFile ( )方法沒有提供下載進度條控制. 可是VBScript中有一個方法偏偏在空間ServerComputer.Network下提供了下載進度條控制方法:

  
  
  
  
  1. [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')    
  2. $url = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'   
  3. $local = "$home\powershellworkshop.zip"   
  4. $object = New-Object Microsoft.VisualBasic.Devices.Network    
  5. $object.DownloadFile($url, $local'''', $true, 500, $true'DoNothing'

 

如今加載Microsoft.VisualBasic.Devices.Network 空間. New出對象,後. DownLoadFile方法參數對比:

DownloadFile 方法 (Uri, String, String, String, Boolean, Int32, Boolean, UICancelOption)

Uri:String Uri 。要下載的文件的路徑,包括文件名和主機地址。必選。
String 下載文件的文件名和路徑。必選。
String。要進行身份驗證的用戶名。默認值爲空字符串 ""。
String。要進行身份驗證的密碼。默認值爲空字符串 ""。
Boolean。指定是否顯示操做進度。默認爲 False
Int32 。以毫秒爲單位的超時間隔。默認值爲 100 秒。
Boolean。指定是否改寫現有文件。默認爲 False
UICancelOption 。指定當用戶在對話框(此對話框在 ShowUI 設置爲 True 時顯示)上單擊「取消」或「否」時的行爲。默認爲 ThrowException
執行過程當中會提示出一個進度條頁面:

相關文章
相關標籤/搜索