Windows PowerShell 是微軟為 Windows 環境所開發的 shell 及腳本語言技術,這項全新的技術提供了豐富的控制與自動化的系統管理能力;而「腳本語言」(scripting languages)則是用來編寫程式的電腦語言。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓寫程式的人(開發者)快速完成程式的編寫工作。本文將簡述腳本語言的起源與目的,並且介紹 Windows PowerShell。
• Bourne-Again Shell(bash):光從名稱就能猜出 bash 與 sh 是有淵源(甚至說「血緣」)。bash 是由 Brian Fox 於 1987 年為 GNU 所創造,1990 年起,Chet Ramey 成為主要的維護者。bash 是相當流行的 shell,除了是大多數 Linux 預設的 shell,在許多 UNIX-like 系統也有其蹤跡(例如 Mac OS X Tiger),甚至也能透過 Cygwin 在 Windows 系統執行。
• Korn Shell(ksh):是由貝爾實驗室的研究員 David Korn 在 80 年代初期所創造,ksh 除了與 sh 完全相容,也包含了若干 C Shell 的功能。
• C Shell(csh):是由 Bill Joy(後來創辦了昇陽公司)為 BSD UNIX 系統所創造。csh 源自於第六版 UNIX 的 Thompson shell(是 Bourne Shell 的前身),因為語法類似 C 語言而得名。
除了上述盛行於 UNIX 環境的 shell,其他作業系統也有專屬的 shell 或 shell 腳本語言,例如蘋果麥金塔系統的 AppleScript、IBM OS/2 的 REXX(REstructured eXtended eXecutor)。而 DOS 以及早期 Windows 的 shell 則是 Command.com,但也因功能較弱,因此有 4DOS、4NT 等軟體可增強功能,Windows 2000 以及之後的 Windows 則改以功能較強 cmd.exe 作為 Windows shell,並且以 Windows Script Host 作為腳本語言執行環境,大幅提高了 Windows shell 的可用性。而微軟也將會推出功能更強的 Windows shell,稱為 Windows PowerShell。
雖然現在許多電腦系統都提供了圖形化的操作方式,但是卻都沒有因而停止提供文字模式的命令列操作方式,相反的,許多系統反而更加強這部份的功能,例如 Windows 就不只加強了操作命令的功能和數量,也一直在改善 shell programming 的方式。而之所以要加強、改善,當然是因為不夠好;Windows 的圖形化操作方式對單一用戶端電腦的操作,已經相當方便,但如果是一群用戶端電腦,或者是 24 小時運作的伺服器電腦,圖形化操作方式有時會力有未逮。
Windows PowerShell 誕生
UNIX 的世界有功能強大的 shell,現在 Windows 環境也有了;Windows PowerShell 不僅提供功能相當於BASH的命令列 shell,同時也內建腳本語言以及輔助腳本程式的工具。Windows PowerShell 是以 .NET 技術為基礎,並且與現有的 WSH 保持回溯相容,因此 Windows PowerShell 的腳本程式不僅能存取 .NET CLR,也能使用現有的 COM 技術。
Windows PowerShell 包含了數種系統管理工具、簡易且一致的語法,提升管理者處理常見如登錄資料庫、WMI。Exchange Server 2007 以及 System Center Operations Manager 2007 等伺服器軟體都將內建 Windows PowerShell。
Monad 是 Windows PowerShell 之前的專案代號,Microsoft Shell(MSH)則是另一個別名;簡而言之,Windows PowerShell 具有以下特點:
下載、安裝、執行 Windows PowerShell
Windows PowerShell 可安裝於 Windows XP 以及之後的用戶端或伺服端 Windows 作業系統,包括:
• 用戶端:Windows XP、Windows XP Service Pack 1、Windows XP Service Pack 2、Windows Vista
• 伺服端:Windows Server 2003、Windows Server 2003 R2、Windows Server 2003 Service Pack 1
而 Windows PowerShell 除了有 32 位元版本,也還有 x64 和 ia64 等兩個 64 位元版本,可以安裝在這兩種 64 位元 Windows 平台。此外,由於執行 Windows PowerShell 需要 .NET Framework 2.0,因此請先替電腦安裝 .NET Framework 2.0。目前 Windows PowerShell 是為 RC1 階段,官方下載的網址請參閱文後(下載前需經過簡單的註冊手續)。下載回來的檔案是 ZIP 壓縮檔,只要解壓縮並執行副檔名為 .msi 的檔案即可安裝,安裝過程相當簡單,只要依照精靈指示即可順利完成。
新的腳本語言
微軟為 Windows PowerShell 創造了新的腳本語言,但若你熟悉任何一種腳本語言,你也能很快熟悉 Windows PowerShell 的腳本語言。基本上,只要將 Windows PowerShell 的指令放進副檔名為 .ps1 的文字檔,這個檔案就是 Windows PowerShell 的腳本程式了。因此在熟悉了 Windows PowerShell 的指令操作之後,只要再熟悉 Windows PowerShell 腳本語言的變數、陣列、迴圈控制、條件控制,大致上就語言的部分就差不多。但若要以腳本程式管理 Windows 系統,除了要熟悉腳本語言,當然也必須熟悉 Windows PowerShell 指令和 WMI,畢竟腳本語言的目的只是黏合這些現成的軟體元件。
執行腳本程式還有幾點注意事項,首先要確定腳本程式所在的位置是在執行路徑裡。再者,由於 Windows PowerShell 顧慮到安全性,預設是禁止電腦系統執行任何腳本程式,如果要解禁,必須利用 Set-ExecutionPolicy 指令。這個指令有三個參數:
善用腳本語言
從近十年的程式語言發展趨勢,能明顯發現腳本語言的發展比系統程式語言更多樣、更活絡,開發者的接受程度也高。當然,這兩種類型的程式語言,各有適用之處,沒有誰取代誰的問題,而是如何選擇適當的方法來完成工作。John K. Ousterhout(Tcl/Tk 的創造者)曾在 Scripting: Higher Level Programming for the 21st Century 一文提出他的看法,他認為腳本語言的主要目的,是在「黏合」(glue)現有的軟體元件,而因為圖形操作介面、網際網路、元件應用框架(component frameworks)的崛起,需要有更多、更好的腳本語言來黏合(因此腳本語言也稱為「黏合語言」(glue languages)或「系統整合語言」(system integration languages)。
簡單、易學、易用的腳本語言尤其適合專責系統或網路管理的 IT 人員,因為腳本語言的起源就是為了便利系統操作,而且作業系統的供應者也都會加強這部份的功能,提供更簡易的語法、更豐富的元件,讓 IT 人員更易於「黏合」各項功能,而組合出絕對適合自身需要的腳本程式。
善用 Windows PowerShell
Windows PowerShell 將 Windows 環境各自分離的腳本語言(WSH)和操作指令重新緊密黏合,並且讓 Windows 擁有與 UNIX 旗鼓相當的 shell 環境和腳本語言,在在都讓 Windows 更適用於大型、複雜、重要的電腦運算環境。
當然 Windows PowerShell 的特色及優點尚不只本文所提,但只要依照本文,讀者將能下載、安裝並親自嘗試 Windows PowerShell 的功能,尤其 Windows PowerShell 將登錄資料庫視為磁碟機來存取,實在非常適當,也非常簡便,因為機碼、機碼值的結構,便如同目錄、檔案。在你下載、安裝 Windows PowerShell 的同時,也別忘了下載官方相關文件,裡面有最新的 Windows PowerShell 官方文件。