指令碼編輯器

發佈日期: 2008 年 2 月 19 日

指令碼編輯器

一般都認為 Scripting Guys 並非談論指令碼編輯器的最佳人選,畢竟在編寫指令碼的時候,我們仍然依賴古老但優秀的「記事本」。但是在評估了某些可以用在 Windows PowerShell 的編輯器之後,我們可能會讓古老但優秀的「記事本」退役。

本页内容

指令碼編輯器
Sapien PrimalScript
PowerShell Analyzer
PowerShell Plus
PowerGUI


Sapien PrimalScript

例如 Sapien Technologies 公司的產品 PrimalScript (標準版 $179 美元,企業版 $399 美元),是系統管理指令碼編輯器的銷售常勝軍,這套編輯器不僅支援 Windows PowerShell,最新的版本 PrimalScript 2007 支援超過 30 種不同的指令碼語言,包括 KixTart、Perl、Python、Ruby、以及 VBScript。

相關連結

支援這麼多種語言雖然令人印象深刻,但是 PrimalScript 到底有何能耐?要回答這個問題,更簡單的方式是告訴你 PrimalScript 有哪些作不到的功能。

等等,要用這種方式回答也不容易,主要是因為我們還找不到 PrimalScript 辦不到的功能。不需多說的是,PrimalScript 包含了所有你預期會在世界級指令碼編輯器看到的功能:行號、彩色的程式碼、IntelliSense、偵錯,甚至還包含拼字檢查、搜尋取代功能。下圖的介面應該能讓你看到這個程式內建的諸多功能:

Cc976719.guide2(zh-tw,TechNet.10).jpg

別急,我們還沒講完。PrimalScript 伴隨了許多能讓你輕鬆工作的工具,例如:WMI Explorer,這能找出電腦裡的 WMI 類別資訊,而且也是我們所見過同類工具最好的);Script Packer,是極為優秀的小工具,可以將 PowerShell 指令碼包裝成標準執行檔 (很酷吧!相信你也會這麼認為,想想看,執行檔不容易遭到修改,而指令碼很容易修改內容)。

此外,PrimalScript 也包括了許多簡化指令碼編寫的功能。舉例來說,假設你需要將數值轉換成 16 進位,只要將數值輸入到PrimalScript、標示所輸入的數值,然後從 Edit 功能表執行『Convert/Hexadecimal』即可。真的就會像變魔術一樣,但這並非魔術,而是真的。

類似這樣的轉換功能也可以用在別名。假設你有一段 PowerShell 指令碼內含別名 gci,但希望編輯器能幫你檢查出別名原本的 cmdlet 名稱 (Get-ChildItem)?只要標示 gci,然後執行 Edit 功能表裡的『Convert/Alias to cmdlet』即可。

使用 PrimalScript 就能相當程度的簡化指令碼編寫工作,這幾乎是很不公平的事。呵,我們是說「幾乎」不公平,因為我們都知道,對愛和指令碼來說,所有的一切都是公平的,而至少利用編輯器可以讓編寫指令碼變得更容易。

PowerShell Analyzer

等等,先別急著走,還沒介紹完,我們才剛開始而已,Shell Tools 公司的 PowerShell Analyzer ($129美元,可下載 45 天試用版) 都還沒報給你知呢。雖然 PowerShell Analyzer 是個很棒的指令碼編輯器,但這個程式並不只是個指令碼編輯器,它也是開發、編寫指令碼的指令碼執行互動環境。什麼意思?這裡有個例子:PowerShell Analyzer 的 Provider 總管能讓你取得安裝在系統裡的 PowerShell 提供者資訊,但是這項功能不只提供這些提供者的一般資訊,還能讓你進一步使用這些提供者;例如下圖是 PowerShell Analyzer 取得 Env 提供者資訊的畫面:

Cc976719.guide3(zh-tw,TechNet.10).jpg

PowerShell Analyzer 還有另一個很酷的功能,或許你知道,如果輸入 Get-ChildItem C:\Scripts 到 PowerShell 主控台,可取回 C:\Scripts 資料夾裡的檔案和資料夾的基本資訊:


Directory: Microsoft.PowerShell.Core\FileSystem::C:\scripts


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        10/22/2007   2:13 PM            ps
d----        10/30/2007   8:38 AM            Test
-a---          1/3/2007   8:00 AM     333432 6of12.txt
-a---         12/7/2007  10:26 AM        474 ad.ps1
-a---          1/3/2007   8:00 AM        540 alice.zip
-ar--          1/3/2007   8:00 AM        155 Audits.xml
			

雖然這已經很不錯,但是不用編寫任何額外的程式碼,PowerShell Analyzer 就能提供類似的資訊給你:

Cc976719.guide4(zh-tw,TechNet.10).jpg

也就是說,PowerShell Analyzer 能給你更多、更詳細的檔案資訊 (要取得其他檔案的資訊,只需從下拉式清單選取檔案名稱)。為什麼我們會認為 PowerShell Analyzer 是開發、編寫指令碼的指令碼執行互動環境呢?嗯,現在就告訴你。

為什麼上圖裡有些屬性是以黑體字呈現?這些其實是可讀可寫的屬性。雖然要知道哪些屬性是可讀可寫相當容易,但是更容易的是只要按下屬性值,再從下拉式清單選取,PowerShell Analyzer 就能讓你更改可讀可寫的屬性值。想要將 Alice.zip 改成唯讀檔案?只要按下目前的 IsReadOnly 屬性值,再從下拉式清單選取 True 即可。一般的指令碼編輯器通常不提供這類的功能。

喔,我們也不得不展示 PowerShell Analyzer 重新編排 PowerShell 說明檔內容的功能,這項功能也相當實用:

Cc976719.guide5(zh-tw,TechNet.10).jpg

真的很棒,不是嗎?想要試試 PowerShell Analyzer 嗎?相信你一定相當樂意。

PowerShell Plus

PowerShell Plus (非商業用途可免費使用) 是 Shell Tools 公司的另一款產品,事實上,如果購買 PowerShell Analyzer,就可免費取得 PowerShell Plus。這兩款產品的功能是互相彌補對方的不足,而非重疊。對不需額外花錢的產品來說,PowerShell Plus 提供了滿滿的功能,例如 PowerShell Plus 提供了完整、成熟的指令碼編輯器,包含了行號、IntelliSense、多重文件介面,以及簡單的偵錯器。這個程式也實作了 PowerShell 主控台,更棒的是,PowerShell Plus 的主控台還包含了 IntelliSense 和 Tab 按鍵的擴充功能:

Cc976719.guide6(zh-tw,TechNet.10).jpg

沒錯,這個主控台視窗內建了 IntelliSense 功能。喔,還不只這些,你還可以利用 Ctrl-V 按鍵將資料貼到主控台視窗。我們是不知道你的反應,但是這項功能的確讓 Scripting Guys 的頭頂爆炸。

PowerShell Plus 也包含了相當便利的程式碼片段編輯器,而這個編輯器也與 PowerShell Plus 主控台緊密結合;這是什麼意思?嗯,只要在這個主控台按下 F11 按鍵,就會出現程式碼片段的下拉式清單:

Cc976719.guide7(zh-tw,TechNet.10).jpg

從中選取程式碼片段,按下 ENTER 按鍵,程式碼就會自動貼入主控台;是主控台喔!唉,真希望我們的老朋友 Cmd.exe 也有這些功能。

PowerGUI

挑禮送人通常很難選到對方喜歡的東西,但如果是要挑選 Windows PowerShell 指令碼編輯器,問題就大不相同了:好像每個產品都很棒 (但你也知道,根本不需要死守某一個指令碼編輯器,多多益善不是嗎?)。雖然我們已經介紹了一些很酷、很有用的編輯器,但怎能跳過 PowerGUI 呢?

可以免費下載的 PowerGUI 提供了有趣 (而獨特) 的指令碼編輯器功能:它是功能完整的指令碼編輯器 (包括行號、IntelliSense、彩色程式碼、逐步偵錯等),但這些並非 PowerGUI 獨具的特色 (其他指令碼編輯器也都有);PowerGUI 獨特的是可以完全擴充的管理主控台。

什麼意思?當你第一次啟動 PowerGUI,就會留意到視窗左邊的樹狀控制面板;如果點選樹狀控制面板,就會看到類似下圖的眾多節點:

Cc976719.guide10(zh-tw,TechNet.10).jpg

如果按下其中的 Process 節點,視窗就會變成如下的畫面:

Cc976719.guide11(zh-tw,TechNet.10).jpg

是的,電腦裡所有執行中的行程就會立即顯示在可調大小、可以排序、可以篩選過濾的格線。

很棒,不是嗎?PowerShell 更棒的是,如果按下 PowerShell Code 標籤頁,PowerGUI 會將產生這些結果的 PowerShell 程式碼顯示出來:

Cc976719.guide12(zh-tw,TechNet.10).jpg

好吧,或許這不是我們曾經看過最令人振奮的程式碼,不過這項功能的確可作為編寫 PowerShell 指令碼的參考。

附註:正確的說,PowerGUI 所顯示的是能夠取得這些資訊的PowerShell 指令碼,而 PowerGUI 會先美化這些資訊的外觀,再加以顯示。


而所謂可以完全擴充的管理主控台,簡單來說就是你可以在樹狀控制面板建立自己的節點,例如以下這個例子;以滑鼠右鈕按下 Local System 節點,指向 New 然後按下 ScriptNode,出現 New Script Node 交談窗之後,在 Name 文字盒輸入 Installed Software,並將以下的程式碼貼到交談窗的指令碼編輯器,再按下 OK:


Get-ChildItem hklm:\software\microsoft\windows\currentversion\uninstall |
ForEach-Object {Get-ItemProperty $_.pspath}) |
Select-Object PSChildName, DisplayName, Publisher, DisplayVersion
			

現在請留意螢幕,應該可以在 PowerGUI 視窗看到已經安裝在電腦裡的軟體清單 (這份清單的內容與控制台『新增或移除程式』所列的相同):

Cc976719.guide13(zh-tw,TechNet.10).jpg

等等,還有喔:以右鈕按下你新的指令碼節點,然後按下 Export,出現 Save AS 交談窗時,輸入指令碼的檔名,並且確定副檔名是 .snapin (例如 Software.snapin)。

這項功能之所以超酷,是因為這可以讓你將 .snapin 檔案與其他執行了 PowerGUI 的使用者共用:只要以右鈕按下 Local System,再按下 Import,就可以將 .snapin 檔案匯入 PowerGUI,於是另一部電腦就可以利用 PowerGUI 快速取得安裝在電腦的軟體清單。

哇,真酷!

下一篇:Cmdlet和增益集

顯示: