閱讀英文

共用方式為


Scriptomatic 2.0:讀我檔案

世界知名的 Scriptomatic 2.0 是為您撰寫 WMI 指令碼的公用程式。還會教導您自行撰寫 WMI 指令碼的基礎概念。如果您是 Scriptomatic 的新手,則絕對會想要試試看這個公用程式,並瞭解之前所錯失的部分。如果您已經熟悉 Scriptomatic 1.0,就會瞭解此工具的好用之處。2.0 版的功能甚至更佳;它具有許多新的功能 (包含可以使用多種指令碼語言來建立指令碼)。

立即下載Scriptomatic 2.0!等一下,您應該先讀完本文的其他部分。這裡還有許多資訊,有些甚至十分有用。

 

簡短歷史課程

從過往的歷史看來,人們都是愈來愈難取悅。例如,以前不可能會有人直接對著路加 (福音傳播者) 說「一本福音書?拜託,路加。馬太、馬可、約翰任何人都可以寫出「一本」福音書」。在雞尾酒會上互相介紹時,尼爾阿姆斯壯可能不會再聽到「喔,第一個登上「月球」的人?瞭解...」。也不曾有人對基奧普斯法老王說「嗯,基奧普斯,這是座「不錯」的金字塔,但是我看不出來這是座「偉大」的金字塔...」。當然,不可能會發生上述狀況。

現在,則稍微有點不同:現在不只是難搞的人難以取悅,甚至就算您成功了,還是無法保證所有人都能滿意。畢竟,沒有比被貼上「好景不常」、「大不如前」或「曇花一現」的標籤更糟的了。我們記得莎士比亞,只因為他寫了數百齣戲劇作品和十四行詩。但誰記得 Mouth and McNeal 這個搖滾雙人團體?根本沒有人記得。因為 Mouth and McNeal 只有一首成名曲,之後就沒有其他有名的歌曲了。您可能永遠會記得史蒂芬金的多產,但是有人知道誰曾經寫過<基加美修史詩>嗎?

沒錯,可能是史蒂芬金。他可能也寫過那本書。但是,我想您知道我們要表達的意思。

回到頁首 回到頁首

指令碼編寫中的曇花一現?

坦白說,Microsoft Scripting Guys 目前不太在意是否會曇花一現;畢竟,您要先有曇花,才能現。我們確定沒人聽過我們,而這在某種程度上,似乎比被記住又很快被遺忘來得好。還記得棒球選手 Joltin' Joe Charboneau 嗎?這就是個很好的例子。

但我們犯了一個嚴重的錯誤:我們最初發行的 Scriptomatic 是個令人驚艷的公用程式,它實際上是要為您撰寫 WMI 指令碼,結果卻大紅。順便一提,這並不是我們的原意。Scriptomatic 一開始是由其中一位 Scripting Guys 尋找針對內部 Microsoft 對象製作之 WMI 簡報的 socko-boffo 結尾時而產生的。就在開始簡報之前的幾分鐘,他創造出 Scriptomatic,這個 HTA (HTML 應用程式) 可以撰寫基本的 WMI 指令碼。他在演講結束時炫耀他的新創作,全體反應強烈且一致;在 Scripting Guys 的正式記錄中寫著,在場的所有人都起立並說「我們現在可以離開了嗎?」雖不算是首次發表軟體中最幸運的一個,但它的接受度可能仍勝過 Microsoft Bob。

**注意:**如果您是喜歡 Microsoft Bob 的 Microsoft 員工,我們只是開玩笑而已。事實上,我們的一些好朋友也使用 Microsoft Bob。

至少我們認為他們使用它。很難讓人們承認這樣的事情。

但回到我們原本的話題。結果,當我們將相同的 Scriptomatic 發行到 Microsoft.com 時,奇怪的事發生了:它竟然大紅,或至少接近一個指令碼相關公用程式大紅的程度。時至今日,Scriptomatic 已有幾近 500,000 人次下載,這個數字讓我們感到欣慰,也讓我們納悶為何不每次下載都收費 1 元美金。

雖然每個人都覺得 Scriptomatic 好用是件好事,但這項未預期的成功也讓我們在電腦界中與 Dexy’s Midnight Runners 並駕齊驅。現在,我們必須再度創造這類的成功例子。但是,披頭四不需要擔心好景不常,因為他們真的很有才華。海明威也不用擔心被說成是曇花一現;畢竟,他的寫作功力非常地好。但是 Microsoft Scripting Guys 呢?

回到頁首 回到頁首

徒勞無功

我們花了無數個月在認真思考變成曇花一現這個問題,但沒有任何進展。我們嘗試了無數次,但老實說,大部分的努力都是沒用的。回想起來,大聲讀出我們的所有指令碼並將它們錄製至 MP3 播放程式 (我們稱為 scriptPod),畢竟都不是什麼好點子 (當然,可能還有點用的是我們記得在 scriptPod 放上 [播放 (Play)] 按鈕。這樣我們可能可以播放搖滾團體 U2 的歌曲)。

同樣地,我們可能應該只測試單一 Scriptbucks 的水質,而不是在國內開心地開立一連串的咖啡店,而它們都提供指令碼口味的拿鐵 (我們自己的辯詞是,許多人都告訴過我們,ADSI Mocha Fudge Delight 不算難喝,只要你加入糖和肉桂、充分攪拌、在上面放上一些奶泡,然後整個倒到排水管而不喝它。還有一個附帶優點就是,它還可以立即讓排水管暢通!)。

而當我們還對<The Scripting Life>真人實境秀抱著一線希望時,卻無法讓派瑞絲希爾頓 (Paris Hilton) 或妮可李奇 (Nicole Ritchie) 回我們電話。(也感謝各種法院指令、強制令和約束令,我們也無法再連絡到她們)。因此要再次創立成功變得比我們預期的還要難。

回到頁首 回到頁首

捲土重來

但就在某一天,我們突然靈機一動。我們不應該複製其他人的點子,而是應該做我們最擅長的事。雖然我們並不是每件事都做得很好,但是我們有一件事做得還不錯,就是撰寫 Scriptomatic。因此,我們的解決方案就十分明顯了:如果我們曾經因創造出一個 Scriptomatic 而大紅,那麼邏輯上,如果我們再發行另一個 Scriptomatic,可能會更紅。就像<星際大戰>冒險故事一樣,差別在於這是指令碼,而不是光劍。

請閱讀New Coke 的真實故事 (英文)

事實上,我們的獨創計畫是仿效 Coca-Cola 公司,它們在多年前推出了 New Coke,這項產品遭眾人唾棄。更不用說,情況有多慘,但是 Coca Cola 中一些默默無名的天才集思廣益後,建議公司重新推出原先的 Coke (現在命名為 Classic Coke)。結果呢?竟然大大的成功!所以,我們想到,我們也可以如法炮製。我們會撰寫一份沒有人會喜歡的軟體,並將它發行為 New Scriptomatic。我們先讓人們抱怨一陣子,然後再重新推出原先的 Scriptomatic (或 Classic Scriptomatic),到時候人們會愛死原先的 Scriptomatic!而我們會成為英雄,最棒的是,我們甚至不需要做任何事。

不過,最後,我們決定建立一個實際可以運作的全新版 Scripotmatic:Scriptomatic 2.0。

回到頁首 回到頁首

Scriptomatic 2.0 問與答

為了慶祝新 Scriptomatic 2.0 的發行,我們決定舉行虛擬的記者招待會。以下是記者招待會的文字記錄。

本頁內容

新功能 新功能
如何使用 Scriptomatic 2.0 如何使用 Scriptomatic 2.0
支援 (或沒有支援) 支援 (或沒有支援)
未來計畫 未來計畫


新功能

問. Scriptomatic 2.0 有什麼強大功能?

答. …….

問. 您可以用麥克風發言嗎?

答. 抱歉,我們不會舉辦很多場記者招待會。Scriptomatic 2.0 的強大功能不只在於修正 Scriptomatic 1.0 的一些既有問題,還引進了一些非常棒的新功能。

問. Scriptomatic 1.0 發生了什麼問題嗎?

答. 沒有,當然沒有。只是,舉例來說,Scriptomatic 1.0 的其中一個功能是要將內容處理為儲存為陣列,但是它未做這樣的處理。另一個功能是 Scriptomatic 1.0 處理日期和時間的方式:它是以 UTC 格式顯示日期和時間,因此您的輸出會是 20040930083722.000000-480。而在 Scriptomatic 2.0 中,這些功能已變更。Scriptomatic 2.0 現在在處理陣列部分不會有任何問題,而且現在日期和時間的顯示也十分良好。

問. 光是這樣,就足以讓 Scriptomatic 2.0 成為新的版本。

答. 我們也這麼認為。但是我們的經理們覺得我們太懶了,因此他們要我們在 Scriptomatic 2.0 中加入一些其他功能。

問. 真的嗎?什麼樣的功能?

答.

嗯,功能太多,不知從何說起。但以下是一些重點:

  • Scriptomatic 2.0 現在可以與您電腦上的所有 WMI 命名空間搭配運作。原先的版本只可以與 root\cimv2 命名空間搭配運作。這適用於 Windows 2000 電腦,但不適用於 Windows XP 或 Windows Server 2003 電腦。
  • Scriptomatic 1.0 提供準系統環境來執行指令碼:您只需要按一下按鈕並在命令視窗中執行指令碼,而傳回的資料會顯示在螢幕上。您仍然可以使用 Scriptomatic 2.0 進行相同的處理;不過,執行指令碼時,還可以選擇將傳回的資料儲存為文字檔、Excel 檔案 (逗號分隔格式) 或是 HTML 或 XML 檔案。
  • Scriptomatic 1.0 可讓您撰寫只針對單一電腦執行的指令碼。

問. 但是,如果想要針對「多部」電腦執行該指令碼呢?

答. 就我們所瞭解,您無法針對多部電腦執行該指令碼,至少在未重新撰寫指令碼的情況下是不可能的。但是,對 Scriptomatic 2.0 而言,並非如此。運用 Scriptomatic 2.0,您可以輸入多個電腦名稱 (格式為逗號分隔清單,或從文字檔載入名稱),而新的 Scriptomatic 就會自動為您撰寫針對所有這些電腦執行的指令碼。

問. 這相當酷。

答.

我們也這麼想。結果,您可以撰寫與使用類似 Classic Coke 的指令碼嗎?

嗯,如果用這種方式,可能可以。但是大部分的人並不知道那個功能。

問. 那麼,這個多部電腦相關功能是 Scriptomatic 2.0 最佳的新功能嗎?

答. 喔,顯然是。但 Scriptomatic 2.0 最佳的新功能顯然是 Scriptomatic 現在可以使用多種語言。運用 Classic Scriptomatic,您只能使用 VBScript 指令碼語言來撰寫指令碼。有了 Scriptomatic 2.0,您可以選擇建立以 VBScript、JScript、Perl 或 Python 撰寫的指令碼。

問. 真的嗎?因此,如果我比較喜歡 Perl 而不是 VBScript,就可以使用 Scriptomatic 2.0 撰寫 Perl 指令碼。

答. 沒錯!

問. 如果我比較喜歡 Python 而不是 Perl,就可以使用 Scriptomatic 2.0 撰寫 Python 指令碼。

答. 當然。

問. 如果我比較喜歡 --

答. 是。

 

如何使用 Scriptomatic 2.0

問. 哇。我想有了所有這些新功能之後,Scriptomatic 2.0 會變得很難使用吧?

答.  

問. 我剛才問「我想有了所有這些新功能之後,Scriptomatic 2.0 會變得很難使用吧?」

答. 喔,抱歉,我們以為記者招待會已經結束。不會,Scriptomatic 和以前一樣容易使用。雖然您有了許多可用的選項,但是仍然可以只按幾下滑鼠按鍵,來撰寫完整的功能完整 WMI 指令碼。

問. 這很難讓人相信。您可以示範一下嗎?

答.

當然。請按兩下檔案 ScriptomaticV2.hta 啟動 Scriptomatic 2.0 開始。幾秒之後,您的螢幕會與下列類似:


Scriptomatic 2.0

Scriptomatic 2.0 預設會載入在 root\cimv2 命名空間中找到的所有類別。如果那是您想要使用的命名空間,那麼您就可以開始撰寫指令碼了。

問. 但是,如果我想要使用不同的命名空間呢?

答.

那也沒有問題。只要按一下標示為 [WMI 命名空間 (WMI Namspace)] 的小型下拉清單。就會顯示本機電腦上找到的所有 WMI 命名空間清單,如下所示:

 

Scriptomatic 2.0

選擇想要使用的命名空間之後,Scriptomatic 2.0 會將該命名空間中找到的所有類別自動載入至標示為 [WMI 類別 (WMI Class)] 的下拉清單中。

問. 然後呢?

答.

此時,您幾乎已完成。只要從 [WMI 類別 (WMI Class)] 下拉清單中選取類別,Scriptomatic 就會立即為您撰寫指令碼,以傳回該類別之所有內容的資訊。例如,假設您想要 Win32_BIOS 類別的資訊。您只需要從下拉清單中選取該類別,就會看到與下列類似的內容:

 

Scriptomatic 2.0

請嘗試使用 Win32_BIOS。您不只會取得指令碼,還會看到 Scriptomatic 2.0 如何處理陣列,以及它如何將日期和時間從 UTC 格式轉換為較具可讀性的資料。

問. 酷!但看來此指令碼是使用 VBScript 所撰寫。我要如何取得使用 Perl 或其中一種其他指令碼語言撰寫的指令碼?

答.

嗯,沒錯:VBScript 是 Scriptomatic 2.0 的預設語言。但是,要使用其中一種其他語言來撰寫指令碼,實際上並不難。例如,如果您想要使用 Perl 指令碼,則只需要指一下標示為 [Perl] 的選項按鈕就可以了:

 

Scriptomatic 2.0

問. 喔,瞭解。那麼,如何讓 Perl 成為 Scriptomatic 2.0 的預設語言?

答. 嗯,下一個問題,謝謝。

問. 所以,我「不」能讓 Perl 成為預設語言嗎?

答. 是的,沒錯,真是抱歉!但是,在您選取 [Perl] 之後,在「此工作階段」中撰寫的所有後續指令碼,都會使用 Perl 進行撰寫 (除非您選取不同的語言選項)。因此,那也還好。

問. 所以,您的意思是絕「不可能」讓 Perl 成為預設語言嗎?

答. 哇,你還真不死心!好的,如果您真得想要 Perl 成為預設語言,那麼您可以遵循下列步驟。

問. 這保證可以運作嗎?

答.

它的保證就像 Scriptomatic 其餘部分一樣:不提供任何保證。但是,它「應該」會運作,而且只要您在 Scriptomatic 2.0 複本上進行變更,應該就沒問題。如果無法運作,則只需要丟掉該複本,然後回頭使用未編輯的 Scriptomatic 2.0 版本即可。

無論如何,請進行下列作業:

  • 製作 ScriptomaticV2.hta 的複本,並使用 [記事本] 開啟該複本。
  • 捲動以找到下列幾行程式碼:
     

     

    '************************
    '* Global State Variables
    '************************
    g_strCurrentLanguage = "VBScript"
    g_strCurrentNamespace = "\root\CIMV2"
    g_strOutputFormat = "CmdLine"
  • 將變數 g_strCurrentLanguage 的值變更為 Perl (或依需要變更為 Python 或 JScript):
     

     

    g_strCurrentLanguage  = "Perl"
  • 捲動到檔案結尾,並找到下列幾行程式碼:
     

     

    <tr>
    <td><span style="font-size:8pt;">VBScript</span></td>
    <td><input type="radio" name="language" onClick="ComposeVBScriptCode" CHECKED></td>
    <tr>
    <tr>
    <td><span style="font-size:8pt;">Perl </span></td>
    <td><input type="radio" name="language" onClick="ComposePerlCode"></td>
    </tr>
    <tr>
    <td><span style="font-size:8pt;">JScript </span></td>
    <td><input type="radio" name="language" onClick="ComposeJScriptCode"></td>
    </tr>
    <tr>
    <td><span style="font-size:8pt;">Python </span></td>
    <td><input type="radio" name="language" onClick="ComposePythonCode"></td>
    </tr>

  • 移除在 onClick="ComposeVBScriptCode" 後面找到的 CHECKED 參數。並在 onClick="ComposePerlCode" (或 ComposePythonCode 或 JScriptCode,視想要使用的預設值而定) 後面輸入 CHECKED。您的程式碼現在應該如下所示:
     

     

    <tr>
    <td><span style="font-size:8pt;">VBScript</span></td>
    <td><input type="radio" name="language" onClick="ComposeVBScriptCode" ></td>
    <tr>
    <tr>
    <td><span style="font-size:8pt;">Perl </span></td>
    <td><input type="radio" name="language" onClick="ComposePerlCode" CHECKED></td>
    </tr>
    <tr>
    <td><span style="font-size:8pt;">JScript </span></td>
    <td><input type="radio" name="language" onClick="ComposeJScriptCode"></td>
    </tr>
    <tr>
    <td><span style="font-size:8pt;">Python </span></td>
    <td><input type="radio" name="language" onClick="ComposePythonCode"></td>
    </tr>
  • 儲存檔案,如果幸運的話,現在 Perl 會設定為預設指令碼語言。

問. 瞭解,這樣也還不錯啊!那麼,[輸出格式 (Output Format)] 標籤下的那些按鈕的作用是什麼?我按了全部的按鈕,但似乎沒有任何作用。

答. 那是因為:按一下它們後,「真的」不會發生任何事情。那些按鈕並不會影響 Scriptomatic 撰寫的實際指令碼;只有在您按一下 [執行 (Run)] 按鈕,並於 Scriptomatic 2.0 內執行指令碼時,那些按鈕才會有作用。

問. 我不太瞭解。

答.

沒關係,那麼請進行下列作業。撰寫指令碼 (使用想要的任何類別或語言),然後按一下 [執行 (Run)] 按鈕。螢幕上應該會跳出一個命令視窗,並執行您剛剛所撰寫的指令碼,而結果則會出現在該命令視窗中。整個作業看起來像這樣:

 

Scriptomatic 2.0

 

這是將 [輸出格式 (Output Format)] 設定為預設值 ([命令提示字元])。現在,請選取不同的選項 (例如,[HTML])。您的螢幕應該如下所示:

 

Scriptomatic 2.0

 

重新執行指令碼,並看看發生什麼狀況。這次,您的輸出應該會出現在網頁上,而不是命令視窗中:

 

Scriptomatic 2.0

 

運用 [純文字 (Plain Text)] 選項,則輸出應該會以純文字檔形式顯示在 [記事本] 中;運用 [Excel],輸出應該會顯示在 Excel 中 (假設您已安裝 Excel)。而運用 [XML] 時... 嗯,您應該知道它會怎麼做了吧!

順便一提,如果想要儲存此資料,請確定先儲存之後再執行另一個指令碼。因為 Scriptomatic 會重複使用相同的暫存檔,所以如果先執行指令碼 A,再執行指令碼 B,則指令碼 B 的結果會覆寫目前顯示的舊資料。例如,目前在 HTML 頁面上的內容都會取代為新的一組資料。

問. 現在讓我確認一下我所瞭解的內容:只有在 Scriptomatic 內執行指令碼時,所有項目才會有作用嗎?如果我將指令碼儲存為 .vbs 檔案,然後執行該指令碼,則會將輸出儲存為 Excel 還是 HTML?

答. 不是這樣的,抱歉。我們考慮過要這樣做,但是那對簡單的 HTA 而言太難處理了。我們想要儘可能維護 Scriptomatic 的一貫簡單性,因此...。

問. 談到儲存檔案 ...。

答.

是,您可以在 Scriptomatic 內儲存指令碼。只需要按一下 [儲存 (Save)] 按鈕,然後在此對話方塊中輸入指令碼的路徑和檔案名稱:

 

Scriptomatic 2.0

而且不要忘記使用正確的副檔名:.vbs 表示 VBScript、.js 表示 JScript、.py 表示 Python,而 .pl 表示 Perl。

問. 那~ 多部電腦的時候會如何處理?運作情況如何?

答.

實際上,運作地相當不錯。在螢幕底端,會看到標示為 [目標電腦 (Target Computers)] 的文字方塊。只要輸入想要針對其執行指令碼之所有電腦的名稱 (以逗號隔開電腦名稱):

 

Scriptomatic 2.0

例如:

 

 

 atl-ws-01, atl-ws-02, atl-ws-03, atl-ws-04

注意:您知道業界出現很多洩漏內部機密的視訊遊戲嗎?以下是 Scriptomatic 2.0 的內部機密:您「實際上」並不需要用逗號隔開電腦名稱。您可以用空格或分號來隔開電腦名稱,或甚至將每個電腦單獨放在一行,如下所示:

 

 

atl-ws-01
atl-ws-02
atl-ws-03
atl-ws-04

問. 但我不想要在文字方塊中輸入一串電腦名稱。

答.

您真是個活寶!

嗯~ 抱歉!我們的意思是:「可以,如果您的電腦名稱儲存在文字檔中,按一下 [從檔案載入 (Load From File)] 按鈕,然後選擇要載入的文字檔,就可以匯入所有那些名稱」。

順便一提,不論用哪一種方式將電腦名稱放入文字方塊中,都需要按一下 [更新指令碼 (Update Script)] 按鈕,讓那些名稱嵌入至指令碼。不管是好或是壞 (好吧!我承認這不太好),這並不會自動發生。

問. 請不要誤會我的意思,我真的喜歡原先的 Scriptomatic。但有一件事十分困擾我,就是它只會列出本機電腦的 WMI 命名空間和類別;而無法連到我的其中一部伺服器,並取得那部伺服器的 WMI 命名空間和類別。新版的 Scriptomatic 仍然有這個問題嗎?

答.

Au contraire,它的意思是... 嗯,我們無法完全確定它的意思。因此,我們換另一種說法:完全相反。在 Scriptomatic 2.0 中,您「可以」從遠端電腦擷取 WMI 資訊。只需要按一下 [WMI 來源 (WMI Source)] 按鈕,並等待此對話方塊出現:

 

Scriptomatic 2.0

 

出現時,請輸入遠端電腦的名稱,並按一下 [確定 (OK)],然後 Scriptomatic 會立即從該遠端電腦擷取資訊。

問. 真是太神奇了!現在,如果我想要結束,要怎麼做?

答. 這是個有趣的問題;就我們所知,應該不會有人想要結束。但是最佳的結束方式是只要按一下 [結束 (Quit)] 按鈕。關閉 Scriptomatic 2.0 視窗,也可以結束,但是如果這樣做,則不會刪除 Scriptomatic 建立的暫存檔。這不會有很大的影響;因為只有少數幾支檔案,而且它們都很小。但是,仍然...。

 

支援 (或沒有支援)

問. 嗯,我接受。但是如果發生任何 Scriptomatic 2.0 問題,我該怎麼辦呢?

答. 請將電子郵件傳送至 scripter@microsoft.com。我們並未提供 Scriptomatic 2.0 的正式支援,也不保證會回答您的問題。但我們會看看我們能做什麼。

 

未來計畫

問. 最後一個問題:以後會有 Scriptomatic 3.0 嗎?

答. 不會,我們已經決定將所有的時間和金錢投入在建立新的線上企業:scriptBay。這將是個網站,我們會在這個網站上將 WMI 指令碼拍賣給出價最高的人。

問. 嗯~ 在發行 Scriptomatic 2.0 之前,怎麼沒有這樣做呢?Scriptomatic 2.0 可以讓人們免費撰寫相同的 WMI 指令碼耶!

答. 我們以後再回覆您 Scriptomatic 3.0 的發行日期...。

回到頁首 回到頁首