PowerShell - Windows PowerShell介紹

大家都知道Unix系統有Shell Script(.sh),相對的Windows系統有Dos Script(.bat, 又稱Batch File),兩者皆是提供使用者操作OS的介面,使用者根據需要客製化的流程撰寫Script,OS則按照Script的流程進行作業。而在現在各種程式語言百家爭鳴的情況下,程式語言大多往OO(Object Oriented)或其他設計方式發展(Event-Driven, ...),使得Script語言的撰寫方式與其他程式語言大相逕庭,加上Script語言的使用限制較多,以上造成使用者使用上的不便對於剛接觸Script語言的開發者也難以上手。


Microsoft為了解決以上的問題,啟動的Windows PowerShell的計畫,PowerShell是一種Script語言,它不但保有原有的Dos Script特性與命令,還結合了一些Shell Script的命令(其實只是利用別名將相同的命令Combine起來)。由於發展PowerShell時期,.Net技術也相當成熟,故Microsoft也將.Net整合到PowerShell裡,在PowerShell裡也可以使用到.Net的DLL或Class,這對於.Net開發者而言相當容易上手。雖然可以使用.Net的元件,但PowerShell畢竟是個Script語言,所以撰寫起來會有點像一半OO一半Script的感覺。
要執行PowerShell就要使用PowerShell執行工具,因為限量用的是Win8,所以一開始就預設有安裝了,如果沒有的話就要自行安裝。



PowerShell使用的是Comlet指令,Comlet(Command Let)指令名稱大多長成XXX-XXX,中間一定有個-符號,Comlet指令提供別名的作用,讓使用者可以透過別名來使用指令,例如Unix的ls與Dos的dir同是列出目錄中的所有項目,在Comlet中,ls與dir都是Get-ChildItem的別名,所以輸入三種指令都可以得到同樣的結果,如果想查詢某個指令的別名或用法可以使用Get-Help -Name [指令名稱]來查詢。



Comlet指令與Dos, Unix指令一樣,有額外的指令屬性,在指令後方明確的加上-[屬性名稱] [屬性值] 可讓執行的結果更加明確,例如上方查詢指令加上Name的屬性就是個例子。

接下來就來看看如何撰寫PowerShell Script。

撰寫PowerShell Script使用PowerShell ISE這個編輯器撰寫,編輯頁面分為兩個部分,上方為Script編輯頁面,下方為指令執行頁面。當然,執行上方所撰寫的PowerShell Script執行結果會呈現在下方。你也可以將撰寫完的Script儲存成.ps1檔直接在檔案系統中執行。



以下我們來簡單的撰寫一個將D槽目錄下的所有檔案資料夾資訊輸出成檔案的PowerShell Script:

Set-Location -Path D:
$currentPath = Get-Location
echo $currentPath
$context = Get-ChildItem
echo $context
$context | Out-File -FilePath $currentPath/CurrentDirFileInfo.txt

說明:
首先Set-Location將目錄移動到D槽,再用$currentPath變數取得Get-Location目前目錄位置,並echo輸出$currentPath,接著$context變數取得Get-ChildItem當下目錄的所有資料夾與檔案的資訊,並echo輸出$current,最後Out-File將$context值輸出到$currentPath目錄下,檔名為CurrentDirFileInfo.txt。


是不是相當方便,但這個範例只是PowerShell應用的冰山一角而已,還有其他更靈活的應用等著使用者來創造。


參考來源:
Windows PowerShell 講座 (1)—指令、重導、別名





留言

張貼留言