新四季網

向命令行指令提供擴展功能的機制的製作方法

2023-07-17 13:47:31 2


專利名稱::向命令行指令提供擴展功能的機制的製作方法
技術領域:
:此處所揭示的主體涉及命令行環境,尤其涉及命令行環境內命令的處理。
背景技術:
:在命令行環境中,命令行界面允許用戶通過輸入命令直接執行任務。例如,可調用提供顯示提示符(例如,「C/>」)的窗口的命令行界面。用戶可在提示符處輸入命令,如「dir」,以執行該命令。若干命令可被管道化在一起,以執行更複雜的任務。這些管道化的命令具有非常複雜的命令行指令是很常見的。命令行界面的一個缺點是,用戶必須知道要輸入的確切命令行執行,因為有幫助的信息未由命令行界面示出。如果對命令行指令之一輸入了諸如排字錯誤等無意的錯誤,則可能以用戶不期望的方式執行了任務。因此,需要一種幫助輸入命令行指令的用戶的機制。發明概述本發明的機制允許在命令行操作環境中的命令行上輸入的命令能夠在第一執行模式或備選執行模式中執行。如果命令包括在備選執行模式中執行的指令,則命令在備選執行模式中執行。備選執行模式由操作環境提供,並向命令提供了擴展的功能。備選執行模式能可視地顯示執行命令的結果、可視地顯示執行命令的模擬結果、在執行之前提示驗證、能執行安全核查以判斷請求執行的用戶是否具有足夠的特權來執行該命令等等。由此,由操作環境提供的擴展功能幫助了輸入命令行指令的用戶,但是不需要開發者在命令內書寫廣泛代碼。附圖的簡要描述圖1示出了可使用示例性管理工具環境的示例性計算裝置。圖2是概括地示出了用於本發明的管理工具環境的示例性管理工具框架的綜述的框圖。圖3所示是圖2所示的管理工具框架的主機專用組件內的組件的框圖。圖4所示是圖2所示的管理工具框架的核心引擎組件內的組件的框圖。圖5是用於指定適於在圖2所示的管理工具框架內使用的小命令(cmdlet)的一個示例性數據結構。圖6是用於指定從其導出圖5所示的小命令的命令基礎類型的示例性數據結構。圖7是用於指定適於在圖2所示的管理工具框架內使用的小命令的另一示例性數據結構。圖8所示是在圖2所示的管理工具框架內執行的用於主機處理的示例性過程的邏輯流程圖。圖9所示是在圖2所示的管理工具框架內執行的用於處理輸入的示例性過程的邏輯流程圖。圖10所示是用於處理適於在圖9所示的處理輸入過程內使用的腳本的過程的邏輯流程圖。圖11所示是適用於在圖10所示的腳本處理過程中使用的腳本預處理過程的邏輯流程圖。圖12所示是用於應用適用於在圖10所示的腳本處理過程中使用的約束的過程的邏輯流程圖。圖13所示是圖2所示的管理工具框架中的命令串的處理的功能流程圖。圖14所示是用於處理適於在圖9所示的處理輸入過程中使用的命令串的過程的邏輯流程圖。圖15所示是用於創建適於在圖14所示的命令行處理中使用的小命令的實例的示例性過程的邏輯流程圖。圖16所示是用於填充適於在圖14所示的命令處理中使用的小命令的屬性的示例性過程的邏輯流程圖。圖17所示是用於執行適於在圖14所示的命令處理中使用的小命令的示例性過程的邏輯流程圖。圖18是適於在圖2所示的管理工具框架內使用的示例性擴展類型管理程序的功能框圖。圖19圖形地描述了管道內的輸出處理小命令的示例性序列。圖20示出了由圖19所示的輸出處理小命令之一執行的示例性處理。圖21圖形地描述了在圖20的處理期間訪問的顯示信息的示例性結構。圖22是列出示例性輸出處理小命令的示例性句法的表格。圖23示出了外部/控制臺小命令使用輸出處理小命令的各種管道序列呈現的結果。較佳實施例的詳細描述簡言之,本發明的機制向命令行指令提供擴展功能,並幫助輸入命令行指令的用戶。該機制提供了用於執行期望的擴展功能的命令行語法。擴展功能可允許在執行前確認指令、可提供執行的指令的可視表示、可提供模擬的指令的可視表示、或者可在執行指令之前驗證特權。可擴展命令行語法以提供其它功能。以下描述闡明了本機制可在其中運作的具體示例性管理工具環境。其它示例性環境可包括該具體實施例的特徵和/或其它特徵,其目標是幫助輸入命令行指令的用戶。以下詳細描述被劃分成若干章節。第一節描述了管理性工具環境可在其中操作的說明性計算環境。第二節描述了管理工具環境的示例性框架。隨後的章節描述了示例性框架的各個組件以及這些組件的操作。例如,結合圖6的「用於執行小命令的示例性過程」一節描述了用於向命令行指令提供擴展功能的示例性機制。示例性計算環境圖1示出了可在一個示例性管理工具環境中使用的一個示例性計算裝置。在十分基本的配置中,計算裝置100通常包括至少一個處理單元102和系統存儲器104。根據計算裝置的確切配置和類型,系統存儲器104可以是易失(如RAM)、非易失(如ROM、快閃記憶體等)或兩者的某一組合。系統存儲器104通常包括作業系統105、一個或多個程序模塊106,並且可包括程序數據107。作業系統包括基於組件的框架,它支持組件(包括屬性和事件)、對象、繼承、多態性、反射,並提供面向對象的基於組件的應用編程接口(API),如由華盛頓州雷蒙德市微軟公司生產的.NETTM框架的API。作業系統105也包括與基於組件的框架120交互的管理工具框架200,以支持管理工具(未示出)的開發。這一基本配置在圖1中由虛線108內的那些組件示出。計算裝置100可具有另外的特徵或功能。例如,計算裝置100也可包括另外的數據存儲設備(可移動和/或不可移動),如磁碟、光碟或磁帶。這類另外的存儲在圖1中由可移動存儲109和不可移動存儲110示出。計算機存儲介質可包括以用於儲存如計算機可讀指令、數據結構、程序模塊或其它數據等信息的任一方法和技術實現的易失和非易失、可移動和不可移動介質。系統存儲器104、可移動存儲109和不可移動存儲110都是計算機存儲介質的示例。計算機存儲介質包括但不限於,RAM、ROM、EEPROM、快閃記憶體或其它存儲器技術、CD-ROM、數字多功能盤(DVD)或其它光存儲、磁盒、磁帶、磁碟存儲或其它磁存儲設備、或可以用來儲存期望的信息並可由計算裝置100訪問的任一其它介質。任一這類計算機存儲介質可以是裝置100的一部分。計算裝置100也可具有(多個)輸入設備112,如鍵盤、滑鼠、輸入筆、語音輸入設備、觸摸輸入設備等等。也可包括(多個)輸出設備114,如顯示器、揚聲器、印表機等等。這些設備在本領域中都是眾所周知的,無需在此詳細描述。計算裝置110也包含允許裝置如通過網絡與其它計算裝置118進行通信的通信連接116。通信連接116是通信介質的一個示例。通信介質通常可以諸如載波或其它傳輸機制等已調製數據信號實施的計算機可讀指令、數據結構、程序模塊或其它數據,並包括任何信息傳送介質。術語「已調製數據信號」指以對信號中的信息進行編碼的方式設置或改變其一個或多個特徵的信號。作為示例而非局限,通信介質包括有線介質,如有線網絡或直接連線連接,以及無線介質,如聲學、RF、紅外和其它無線介質。本發明使用的術語計算機可讀介質包括存儲介質和通信介質兩者。示例性管理工具框架圖2是概括地示出了示例性管理工具框架200的綜述的框圖。管理工具框架200包括一個或多個主機組件202、主機專用組件204、主機無關組件206以及處理程序組件208。主機無關組件206可與其它組件(即,主機組件202、主機專用組件204和處理程序組件208)的每一個通信。這些組件的每一個在下文簡要描述,並在需要時在隨後的章節中詳細描述。主機組件主機組件202包括一個或多個主機程序(如,主機程序210-214),它們向用戶或其它程序展示了用於相關聯的應用程式的自動化特徵。每一主機程序210-214可以其自己特有的風格展示這些自動化特徵,例如通過命令行、圖形用戶界面(GUI)、語音識別接口、應用編程接口(API)、腳本語言、web服務等等。然而,主機程序210-214的每一個通過由管理工具框架提供的機制展示了一個或多個自動化特徵。在本示例中,該機制使用了小命令(cmdlet)以向相關聯的主機程序210-214的用戶提供管理工具能力的表面。另外,該機制使用了一組由主機變得可用的接口以在與對應的主機程序210-214相關聯的應用程式中嵌入管理工具環境。貫穿以下討論,術語「小命令」用於指在參考圖2-23描述的示例性管理工具環境內使用的命令。小命令對應於傳統管理環境內的命令。然而,小命令與這些傳統命令完全不同。例如,小命令通常比其相對的命令在大小上更小,因為小命令可使用管理工具框架提供的公用功能,例如語法分析、數據確認、出錯報告等等。由於這些公用功能可被實現一次並測試一次,因此貫穿管理工具框架對小命令的使用允許與應用程式專用功能相關聯的遞增開發和測試成本與傳統環境相比相對較低。另外,與傳統的環境相反,小命令不需要是獨立的可執行程序。相反,小命令可以在管理工具框架內的同一進程中運行。這允許小命令在彼此之間交換「活動」對象。這一交換「活動」對象的能力允許小命令直接在這些對象上調用方法。創建和使用小命令的細節在下文更詳細地描述。總體上,每一主機程序210-214管理用戶和管理工具框架內的其它組件之間的交互。這些交互可包括對參數的提示、錯誤報告等等。通常,每一主機程序210-213可提供其自己的專用主機小命令集(例如,主機小命令218)。例如,如果主機程序是電子郵件程序,則主機程序可提供與郵箱和消息交互的主機小命令。即使圖2示出了主機程序210-214,然而本領域的技術人員可以理解,主機組件202可包括與現有或新創建的應用程式相關聯的其它主機程序。這些其它主機程序也將把由管理工具環境提供的功能嵌入在其相關聯的應用程式內。由主機程序提供的處理在下文結合圖8詳細描述。在圖2所示的示例中,主機程序可以是管理控制臺(即,主機程序210),它提供了簡單、一致的管理用戶界面,以供用戶創建、保存和打開管理計算裝置的硬體、軟體和網絡組件的管理工具。為實現這些功能,主機程序210提供了用於在管理工具框架上構建管理GUI的一組服務。GUI交互也可被展示為用戶可見的腳本,它幫助將由管理工具環境提供的腳本能力教給用戶。在另一示例中,主機程序可以是命令行交互式外殼(即,主機程序212)。命令行交互式外殼可允許外殼元數據216在命令行上輸入,以影響命令行的處理。在又一示例中,主機程序可以是web服務(即,主機程序214),它使用用於跨平臺的分布式計算和互操作性的行業標準規範、程式語言和應用程式。除這些示例之外,第三方可通過創建在其主機程序或其它主機程序中使用的「第三方」或「提供者」接口和提供者小命令,來添加其自己的主機組件。提供者接口展示了應用程式或基礎結構,使得該應用程式或基礎結構可由管理工具框架來操縱。提供者小命令提供了用於導航、診斷、配置、生命周期、操作等的自動化。提供者小命令展示了完整的數據存儲異構集上的多態小命令行為。管理工具環境在提供者小命令上用與其它小命令類相同的優先級操作。提供者小命令是使用與其它小命令相同的機制創建的。提供者小命令向管理工具框架展示了應用程式或基礎結構的特定功能。由此,通過使用小命令,產品開發者只需創建一個主機程序,它然後將允許其產品對許多管理工具運作。例如,採用示例性管理工具環境,系統級圖形用戶界面幫助菜單可以被集成並移植到現有的應用程式中。主機專用組件主機專用組件204包括計算裝置(例如,圖1描述的計算裝置100)用於將管理工具框架與該框架所運行的平臺細節相隔離的服務的集合。由此,對每一類型的平臺有一組主機專用組件。主機專用組件允許用戶在不同的作業系統上使用同一管理工具。簡要地轉向圖3,主機專用組件204可包括智能感知(intellisense)/元數據訪問組件302、幫助小命令組件304、配置/註冊組件306、小命令設置組件308以及輸出接口組件309。組件302-308與關聯於資料庫存儲314的資料庫存儲管理器312通信。語法分析器220和腳本引擎222與智能感知/元數據訪問組件302通信。核心引擎224與幫助小命令組件304、配置/註冊組件306、小命令設置組件308和輸出接口組件309通信。輸出接口組件309包括由主機向外部小命令提供的接口。這些外部小命令然後可調用主機的輸出對象來執行呈現。主機專用組件204也可包括日誌記錄/審計組件310,核心引擎224使用該組件來與提供日誌記錄和審計能力的主機專用(即,平臺專用)服務通信。在一個示例性管理工具框架中,智能感知/元數據訪問組件302提供了命令、參數和參數值的自動完成。幫助小命令組件304提供了基於主機用戶界面的定製幫助系統。處理器組件回頭參考圖2,處理器組件208包括傳統實用程序230、管理小命令232、非管理小命令234、遠程小命令236以及web服務接口238。管理小命令232(也稱為平臺小命令)包括查詢或操縱與計算裝置相關聯的配置信息的小命令。由於管理小命令232作業系統類型信息,因此它們依賴於特定的平臺。然而,每一平臺通常具有提供與其它平臺上的管理小命令232類似的行動的管理小命令232。例如,每一平臺支持獲取和設置系統管理屬性(如,獲取/處理、設置/IP位址)的管理小命令232。主機無關組件206通過主機無關組件206內生成的小命令對象與管理小命令通信。用於小命令對象的示例性數據結構將在下文結合圖5-7詳細描述。非管理小命令234(有時候稱為基礎小命令)包括在由管理小命令232提供的對象上組合、排序、過濾和執行其它處理的小命令。非管理小命令234也可包括用于格式化並輸出與管道化對象相關聯的數據的小命令。用於提供數據驅動命令行輸出的一種示例性機制在下文參考圖19-23描述。非管理小命令234可以在每一平臺上是相同的,並提供了一組通過小命令對象與主機無關組件206交互的實用程序。非管理小命令234和主機無關組件之間206的交互允許對象上的反射,並允許與其(對象)類型無關地在反射的對象上進行處理。由此,這些實用程序允許開發者一次書寫非管理小命令,然後跨計算系統上支持的所有對象類應用這些非管理小命令。在過去,開發者必須首先充分理解要處理的數據的格式,然後書寫應用程式來僅處理該數據。結果,傳統應用程式只能處理非常有限範圍的數據。用於與其對象類型無關地處理對象的一種示例性機制在下文結合圖18描述。傳統實用程序230包括現有的可執行代碼,諸如在cmd.exe下運行的win32可執行代碼。每一傳統實用程序230使用文本流(即,stdin和stdout)與管理工具框架通信,文本流是對象框架內的一種對象類型。由於傳統實用程序230使用了文本流,因此由管理工具框架提供的基於反射的操作是不可用的。傳統實用程序230在與管理工具框架不同的進程內執行。儘管未示出,其它小命令也可在進程外操作。遠程小命令236與web服務接口238一起提供了通過諸如網際網路或內聯網(例如,圖2所示的網際網路/內聯網240)等通信介質訪問其它計算裝置上的交互式和編程管理工具環境的遠程機制。在一個示例性管理工具框架中,遠程機制支持依賴於跨越多個獨立控制域的基礎結構上的聯合服務。遠程機制允許腳本在遠程計算裝置上執行。腳本可以在單個或多個遠程系統上運行。腳本的結果可以當每一個別的腳本完成時被處理,或者結果可以被累積,並在各種計算裝置上的所有腳本完成之後一起處理。例如,被示出為主機組件202之一的web服務214可以是遠程代理。遠程代理處理遠程命令請求對目標系統上的語法分析器和管理工具框架的提交。遠程小命令擔當以提供對遠程代理的訪問的遠程客戶機。遠程代理和遠程小命令通過經語法分析的流來通信。該經語法分析的流可以在協議層上保護,或者可使用另外的小命令來加密,然後解密經語法分析的流。主機無關組件主機無關組件包括語法分析器220、腳本引擎222以及核心引擎224。主機無關組件206提供了組合多個小命令、協調小命令的操作以及協調其它資源、會話和作業與小命令的交互的機制和服務。示例性語法分析器語法分析器220提供了從各種主機程序接收輸入請求並將輸入請求映射到貫穿整個管理工具框架使用,諸如在核心引擎224內使用的統一小命令對象的機制。另外,語法分析器220可基於接收到的輸入執行數據處理。用於基於輸入執行數據處理的一種示例性方法在下文結合圖12描述。本發明的管理工具框架的語法分析器220提供了簡單地向用戶展現同一能力的不同的語言或句法的能力。例如,由於語法分析器220負責解釋輸入請求,因此語法分析器220內影響期望輸入句法的代碼改變本質上將影響管理工具框架的每一用戶。因此,系統管理員可在不同的計算裝置上提供支持不同句法的不同的語法分析器。然而,用同一語法分析器操作的每一用戶對每一小命令將經歷一致的句法。相反,在傳統的環境中,每一命令實現其自己的句法。由此,對於上千種命令,每一環境支持若干不同的句法,它們中的大多數通常彼此不一致。示例性腳本引擎腳本引擎222提供了使用腳本將多個小命令聯繫在一起的機制和服務。腳本是在繼承的嚴格規則下共享會話狀態的命令行的聚集。基於輸入請求中提供的句法,腳本內的多個命令行可以同步或異步地執行。腳本引擎22能夠處理諸如如循環和條件子句等控制構造,並能夠處理腳本內的變量。腳本引擎也管理會話狀態,並向小命令給予基於政策(未示出)對會話數據的訪問。示例性核心引擎核心引擎224負責處理由語法分析器220識別的小命令。簡單地轉向圖4,示出了管理工具框架200內的一個示例性核心引擎。該示例性核心引擎224包括管道處理器402、加載器404、元數據處理器406、以及出錯和事件處理器308、會話管理器410、以及擴展類型管理器412。示例性元數據處理器元數據處理器406被配置成訪問元數據並將其儲存在諸如圖3所示的資料庫存儲314等元數據存儲中。元數據可以通過命令行、在小命令類定義內等提供。管理工具框架200內的不同組件可在執行其處理時請求元數據。例如,語法分析器202可請求元數據以確認命令行上提供的參數。示例性出錯和事件處理器出錯和事件處理器408提供了一錯誤對象,它儲存關於命令行的處理期間的每一出錯發生的信息。對於尤其適合本發明的管理工具框架的一個特定出錯和事件處理器的額外信息,請參閱名為「SystemandMethodforPersistingErrorInformationinaCommandLineEnvironment(用於持久保存命令行環境中的錯誤信息的系統和方法)」的美國專利申請號______/美國專利號_____,其為本發明的同一受讓人所有,並通過引用結合於此。示例性會話管理器會話管理器410向管理工具框架200內的其它組件提供會話和狀態信息。會話管理器管理的狀態信息可由任一小命令、主機或核心引擎通過編程接口來訪問。這些編程接口允許狀態信息的創建、修改和刪除。示例性管道處理器和加載器加載器404被配置成加載存儲器中的每一小命令,以使管道處理器402能夠執行小命令。管道處理器402包括小命令處理器420和小命令管理器422。小命令處理器420分派個別的小命令。如果小命令需要在遠程或一組遠程機器上執行,則小命令處理器420協調與圖2所示的遠程小命令236的執行。小命令管理器422處理小命令的聚集的執行。小命令管理器422、小命令處理器420以及腳本引擎222(圖2)彼此通信,以在從主機程序210-214接收到的輸入上執行處理。通信可以本質上是遞歸的。例如,如果主機程序提供腳本,則該腳本可調用小命令管理器422以執行小命令,該小命令本身可以是腳本。腳本然後可由腳本引擎222執行。核心引擎的一個示例性過程流在下文結合圖14詳細描述。示例性擴展類型管理器如上所述,管理工具框架提供了允許對象上的反射並允許獨立於其(對象)類型在反射的對象上處理的一組實用程序。管理工具框架200與計算系統上的組件框架(圖1所示的組件框架120)交互,以執行這一反射。本領域的技術人員可以理解,反射提供了查詢對象並獲取該對象的類型,然後在各種對象以及與該類型對象相關聯的屬性反射以獲取其它對象和/或需要的值的能力。即使反射向管理工具框架200提供了對象上的大量信息,因此發明人理解,反射集中在該類型的對象上。例如,當在資料庫數據表上反射時,返回的信息是數據表具有兩個屬性列屬性和行屬性。這兩個屬性未提供關於數據表內的「對象」的足夠細節。當在可擴充標記語言(XML)和其它對象上使用反射時也會產生類似的問題。由此,發明人構想了一種集中在類型的使用上的擴展類型管理器412。對於這一擴展類型管理器,對象的類型不是重要的。相反,擴展類型管理器對於該對象是否能用於獲取需要的信息是感興趣的。繼續上述數據表示例,發明人理解,知道數據表具有列屬性和行屬性並不是特別感興趣的,但是理解,一列包含感興趣的信息。集中在使用上,可將每一行與「對象」相關聯,並將每一列與該「對象」的「屬性」相關聯。由此,擴展類型管理器412提供了一種從任一類型的可精確語法分析輸入中創建「對象」的機制。如此,擴展類型管理器412補充了基於組件的框架120提供的反射能力,並將「反射」擴展到任一類型的可精確語法分析輸入。總體上,擴展類型管理器被配置成訪問可精確語法分析輸入(未示出),並將可精確語法分析輸入與請求的數據類型相關。擴展類型管理器412然後向作出請求的組件,例如管道處理器402或語法分析器220提供所請求的信息。在以下討論中,可精確語法分析輸入被定義為其中可辨別屬性和值的輸入。某些示例性可精確語法分析輸入包括Windows管理規程(WMI)輸入、ActiveX數據對象(ADO)輸入、可擴充標記語言(XML)輸入以及諸如.NET對象等對象輸入。其它可精確語法分析輸入可包括第三方數據格式。簡要地轉向圖18,示出了在管理工具框架內使用的示例性擴展類型管理器的功能框圖。為解釋的目的,由擴展類型管理器提供的功能(由圓圈內的數字「3」表示)與由傳統緊綁定系統提供的功能(由圓圈內的數字「1」表示)以及由反射系統提供的功能(由圓圈內的數字「2」表示)形成對比。在傳統的緊綁定系統中,應用程式內的調用者1802直接訪問對象A內的信息(例如,屬性P1和P2、方法M1和M2)。如上所述,調用者1802在編譯時必須事先知道由對象A提供的屬性(如,屬性P1和P2)以及方法(如,方法M1和M2)。在反射系統中,類屬代碼1820(不依賴於任何數據類型)查詢在請求的對象上執行反射1810的系統1808,並向類屬代碼1820返回關於該對象(如,對象A)的信息(例如,屬性P1和P2、方法M1和M2)。儘管未在對象A中示出,返回的信息可包括諸如銷售商、文件、日期等的附加信息。由此,通過反射,類屬代碼1820至少包含緊綁定系統提供的相同信息。反射系統也允許調用者1802查詢系統,並在沒有關於參數的任何先驗知識的情況下獲取附加信息。在緊綁定系統和反射系統中,新數據類型不能被容易地結合到操作環境中。例如,在緊綁定系統中,一旦操作環境被交付,則操作環境無法結合新數據類型,因為它必須被重構以支持它們。同樣,在反射系統中,每一對象類的元數據是固定的。由此,結合新數據類型通常未完成。然而,採用本發明的擴展類型管理器,可以將新數據類型結合到作業系統中。採用擴展類型管理器1822,類屬代碼1820可在請求的對象上反射,以獲取由各種外部源提供的擴展數據類型(如,對象A′),諸如第三方對象(如,對象A′和B)、語義web1832、本體論服務1834等等。如圖所示,第三方對象可擴展現有對象(如,對象A′)或可創建全新的對象(如,對象B)。這些外部源的每一個可在類型元數據1840內註冊其唯一的構造,並可提供代碼1842。當對象被查詢時,擴展類型管理器審閱類型元數據1840,以判斷對象是否已被註冊。如果對象未在類型元數據1840內註冊,則執行反射。否則,執行擴展反射。代碼1842返回與反射的類型相關聯的附加屬性和方法。例如,如果輸入類型是XML,則代碼1842可包括描述使用XML來從XML文檔創建對象的方式的描述文件。由此,類型元數據1840描述了擴展類型管理器412應當如何查詢各種類型的可精確語法分析輸入(例如,第三方對象A′和B、語義web1832)來獲取用於對該特定輸入類型創建對象的期望屬性,並且代碼1842提供了獲取這些期望屬性的指令。結果,擴展類型管理器412提供了一間接層,它允許在所有類型的對象上「反射」除提供擴展類型之外,擴展類型管理器412提供了附加的查詢機制,如屬性路徑機制、關鍵字機制、比較機制、開關機制、通配符處理(globber)機制、屬性設置機制、關係機制等等。這些查詢機制的每一個在下文「示例性擴展類型管理器處理」一節中詳細描述,它們在輸入命令串時向系統管理員提供了靈活性。可使用各種技術來實現擴展類型管理器的語義。下文描述了三種技術。然而,本領域的技術人員可以理解,可使用這些技術的變體而不脫離要求保護的本發明的範圍。在一種技術中,可提供具有靜態方法(如,getproperty)的一系列類。對象被輸入到靜態方法中(例如,getproperty(object)),並且靜態方法返回一組結果。在另一種技術中,作業系統用適配器包裝對象。由此,不提供輸入。適配器的每一實例具有getproerty(獲取屬性)方法,它在包裝的對象上運作,並返回該包裝對象的屬性。以下是示出這一技術的偽代碼ClassAdaptor{ObjectX;getProperties;}在又一種技術中,適配器類對對象進行細分類。傳統上,細分類在編譯之前發生。然而,對於某些操作環境,細分類可動態地發生。對於這些類型的環境,以下是示出這一技術的偽代碼ClassAdaptor:A{getProperties{returndata;}}由此,如圖18所示,擴展類型管理器允許開發者創建新的數據類型、註冊該數據類型、並允許其它應用程式和小命令使用該新的數據類型。相反,在現有的管理環境中,在編譯時每一數據類型必須是已知的,使得與從該數據類型例示的對象相關聯的屬性或方法可被直接訪問。因此,添加管理環境所支持的新數據類型在過去很少完成。返回到圖2,總體上,管理工具框架200不依賴於用於協調用戶的命令輸入的執行的外殼,但是相反,將功能分割成處理部分(例如,主機無關組件206)和用戶交互部分(例如,通過主機小命令)。另外,本發明的管理工具環境很大程度上簡化了管理工具的編程,因為語法分析和數據確認所需的代碼不再包括在每一命令中,而是相反,由管理工具框架內的組件(例如,語法分析器220)提供。下文描述管理工具框架內執行的示例性處理。示例性操作圖5-7圖形地示出了在管理工具環境中使用的示例性數據結構。圖8-17圖形地示出了管理工具環境內的示例性處理流。本領域的技術人員可以理解,某些處理可以由與以下描述的組件不同的組件來執行,而不脫離本發明的範圍。在描述管理工具框架內執行的處理之前,描述管理工具框架內使用的示例性數據結構。小命令對象的示例性數據結構圖5是用於指定始於在圖2所示的管理工具框架內使用的小命令的示例性數據結構。當完成時,小命令可以是管理小命令、非管理小命令、主機小命令、提供者小命令等等。以下討論描述了相對於系統管理員的觀點的小命令(即,提供者小命令)的創建。然而,每一類型的小命令以相同的方式創建並以相同的方式操作。小命令可以用任何語言來書寫,如C#。另外,小命令可以使用腳本語言或類似語言來書寫。當管理工具環境用.NET框架來運作時,小命令可以是.NET對象。提供者小命令500(後文稱為小命令500)是具有小命令類名(例如,StopProcess(停止進程)504)的公用類。小命令500從小命令類506導出。小命令類506的一個示例性數據結構在下文結合圖6描述。每一小命令500與一命令屬性502相關聯,該命令屬性將名字(例如,Stop(停止)/Process(進程))與小命令500相關聯。名字在管理工具環境內註冊。如下文描述的,當在命令行或腳本中提供具有名字(例如,Stop/Process)的命令串作為輸入時,輸入語法分析器在小命令註冊表中查找,以識別小命令500。小命令500與一語法機制相關聯,該語法機制定義了對小命令的期望輸入參數的語法。語法機制可以直接或間接地與小命令相關聯。例如,小命令500示出了直接語法關聯。在這一小命令500中,聲明了一個或多個公用參數(如,ProcessName(進程名)510和PID512)。公用參數的聲明驅動了對小命令500的輸入對象的語法分析。或者,參數的描述可以在外部源中出現,如XML文檔。該外部源中的參數描述然後將驅動對小命令的輸入對象的分析。每一公用參數510、512可具有與其相關聯的一個或多個屬性(即,偽指令)。偽指令可來自以下類別的任一個語法分析偽指令521、數據確認偽指令522、數據生成偽指令523、處理偽指令524、編碼偽指令525以及文檔編制偽指令526、偽指令可以用方括號環繞。每一偽指令描述了要在下面預期的輸入參數上執行的操作。某些偽指令也可在類級應用,如用戶交互類型偽指令。偽指令儲存在與小命令相關聯的元數據中。這些屬性的應用在下文結合圖12描述。這些屬性也可反映小命令內聲明的參數的填充。用於填充這些參數的一個示例性過程在下文結合圖16描述。核心引擎可應用這些偽指令以確保依從性。偽指令500包括第一方法530(後文可互換地被稱為StartProcessing(開始處理)方法530)以及第二方法540(後文可互換地被稱為processRecord(處理記錄)方法540)。核心引擎使用第一和第二方法530、540,來指示小命令500的處理。例如第一方法530被執行一次,並執行設置功能。第二方法540內的代碼542對需要由小命令500處理的每一對象(如,記錄)執行。小命令500也可包括在小命令500之後清理的第三方法(未示出)。由此,如圖5所示,第二方法540內的代碼542通常相當簡單,並且不包含傳統管理工具環境中需要的功能,如語法分析代碼、數據確認代碼等等。由此,系統管理員能夠開發複雜的管理任務,而無需學習複雜的程式語言。圖6是用於指定從其導出圖5所示的小命令的小命令基類602的示例性數據結構600。當小命令包括掛鈎(hook)語句並且對應的開關是命令行上或腳本中的輸入(統稱為命令輸入)的任何時候,小命令基類602包括提供額外功能的指令。示例性數據結構600包括參數,如布爾參數verbose610、whatif620和confirm630。如下文所解釋的,這些參數對應於可在命令輸入上鍵入的串。示例性數據結構600也可包括確定請求執行的任務是否被允許的安全方法640。圖7是用於執行小命令的另一示例性數據結構700。總體上,該數據結構700提供了用於清楚地表達管理工具框架和小命令之間的合約的方法。類似於數據結構500,該數據結構700是從小命令類704導出的公用類。軟體開發者指定將名詞/動詞對,如「get/process(獲取/進程)」和「format/table(格式化/表格)」與小命令700相關聯的cmdletDeclaration702。名詞/動詞對在管理工具環境內註冊。動詞或名詞可以在小命令名中是隱含的。同樣,類似於數據結構500,數據結構700可包括一個或多個公用成員(如,Name730、Recurse732),它們可以與結合數據結構500所描述的一個或多個偽指令520-526相關聯。然而,在這一示例性數據結構700中,期望輸入參數730和732的每一個可以分別與輸入屬性731和733相關聯。輸入屬性731和733指定了其相應參數730和732的數據應當從命令行獲取。由此,在此示例性數據結構700中,沒有從另一小命令發出的管道化對象填充的任何期望輸入參數。由此,數據結構700不覆蓋由小命令基類提供的第一方法(如,StartProcessing)或第二方法(如,ProcessRecord)。該數據結構700也可包括不被識別為輸入參數的私有成員740。私有成員740可用於儲存基於偽指令之一生成的數據。由此,如數據結構700中所示的,通過使用在特定小命令類中聲明公有屬性和偽指令,小命令開發者可容易地為其小命令的期望輸入參數指定語法,並指定應當在期望輸入參數上執行的處理,而無需小命令開發者生成任一底層邏輯。數據結構700示出了小命令和語法機制之間的直接關聯。如上所述,這一關聯也可以是間接的,如通過指定諸如XML文檔等外部源內的期望參數定義。現在描述管理工具環境內的示例性過程流。示例性主機處理流圖8所示是用於在圖2所示的管理工具框架內執行的主機處理的示例性過程的邏輯流程圖。該過程800在框801開始,其中,接收到啟動特定應用程式的管理工具框架的請求。該請求可以通過諸如選擇應用程式圖標等鍵盤輸入本地發送,或者通過不同計算裝置的web服務接口遠程發送。對於任一種情形,處理繼續到框802。在框802,「目標」計算裝置上特定的應用程式(例如,主機程序)設置其環境。這包括判斷令小命令的哪些子集(例如,管理小命令232、非管理小命令234以及主機小命令218)對用戶可用。通常,主機程序將令所有的非管理小命令234可用,並且令其自己的主機小命令218可用。另外,主機程序將令管理小命令234的一個子集可用,如處理進程、盤等的小命令。由此,一旦主機程序令小命令的子集可用,管理工具框架被有效地嵌入在對應的應用程式中。處理繼續到框804。在框804,通過特定的應用程式獲取輸入。如上所述,輸入可採用若干形式,如命令行、腳本、語音、GUI等等。例如,當輸入是通過命令行獲取時,輸入從鍵盤上鍵入的按鍵來檢索。對於GUI主機,串是基於GUI來組成的。處理在框806繼續。在框806,將輸入提供給管理工具框架內的其它組件以供處理。主機程序可將輸入直接轉發到其它組件,如語法分析器。或者,主機程序可通過其主機小命令之一來轉發輸入。主機小命令可將其特定類型的輸入(如,語音)轉換成可由管理工具框架識別的一種類型的輸入(如,文本串、腳本)。例如,語音輸入可以被轉換成腳本或命令行串,取決於語音輸入的內容。由於每一主機程序負責將其類型的輸入轉換成可由管理工具框架識別的輸入,因此管理工具框架可接受來自任意數量的各種主機組件的輸入。另外,管理工具框架提供了一組豐富的實用程序,當輸入通過其小命令之一轉發時,它們執行數據類型之間的轉換。其它組件在輸入上執行的處理在下文結合若干其它附圖來描述。主機處理在判別框808繼續。在判別框808,判斷是否接收到對另外的輸入的請求。如果負責處理輸入的其它組件之一需要來自用戶的另外的輸入以完成其處理,則會發生這一情況。例如,可能需要口令來訪問某些數據、可能需要特定行動的確認等等。對於某些類型的主機程序(如,語音郵件),這樣的請求可能不是適當的。由此,與向用戶查詢另外的輸入相反,主機程序可串行化狀態、掛起狀態、並發送通知,使得稍後該狀態得以恢復並且輸入的執行得以繼續。在另一變體中,主機程序可在預定的時間段之後提供默認值。如果接收到對另外的輸入的請求,則處理循環回到框804,其中獲取另外的輸入。處理然後通過上述框806和808繼續。如果未接收到對另外的輸入的請求,且輸入已被處理,則處理繼續到框810。在框810,從管理工具框架內的其它組件接收結果。該結果可包括出錯消息、狀態等等。結果是以對象的形式,它可由管理工具框架內的主機小命令識別和處理。如下文所描述的,對每一主機小命令書寫的代碼是非常少的。由此,可顯示一組豐富的輸出,而無需開發成本的巨大投資。處理在框812繼續。在框812,可審閱結果。主機小命令將結果轉換成主機程序支持的顯示風格。例如,返回的對象可由GUI主機程序使用圖形描述來顯示,如圖標、吠叫狗(barkingdog)等。主機小命令提供數據的默認格式和輸出。默認格式和輸出可使用下文結合圖19-23描述的示例性輸出處理小命令。在可任選地顯示了結果之後,主機處理完成。用於處理輸入的示例性過程圖9所示是用於在圖2所示的管理工具框架內執行的處理輸入的示例性過程的邏輯流程圖。處理在框901開始,其中通過主機程序鍵入輸入,並將其轉發到管理工具框架內的其它組件。處理在框902繼續。在框902,從主機程序接收輸入。在一個示例性管理工具框架中,輸入由語法分析器接收,它對輸入進行解碼,並定向輸入以供進一步處理。處理在判別框904繼續。在判別框904,確定輸入是否為腳本。輸入可採用腳本或表示命令行的串(後文稱為「命令串」)的形式。命令串可表示管道化在一起的一個或多個小命令。即使管理工具框架支持若干不同的主機,然而每一主機提供輸入作為腳本或命令串以供處理。如下文可見到的,腳本和命令串之間的交互在本質上是遞歸的。例如,腳本可具有調用小命令的行。小命令本身可以是腳本。由此,在判別框904,如果輸入是腳本的形式,則處理在框906繼續,執行腳本的處理。否則,處理在框908繼續,執行命令串的處理。一旦在框906或908執行的處理完成,則輸入的處理完成。腳本的示例性處理圖10所示是用於處理適於在圖9所示的處理輸入過程中使用的腳本的過程的邏輯流程圖。該過程在框1001開始,將輸入識別為腳本。腳本引擎和語法分析器彼此通信,以執行以下功能。處理在框1002繼續。在框1002,在腳本上執行預處理。簡要地轉向圖11,示出了一個邏輯流程圖,它示出了適於在腳本處理過程1000中使用的腳本預處理過程1100。腳本預處理在框1101開始,並繼續到判別框1102。在判別框1102,判斷腳本是否第一次運行。這一判斷可以基於從註冊表或其它存儲機制中獲得的信息。腳本從存儲機制內識別,並且審閱相關聯的數據。如果腳本先前未運行過,則處理在框1104繼續。在框1104,腳本在註冊表中註冊。這允許關於該腳本的信息被儲存,以供管理工具框架內的組件稍後使用。處理在框1106繼續。在框1106,從腳本提取幫助和文檔編制信息,並存儲在註冊表中。再一次,該信息稍後可由管理工具框架內的組件訪問。腳本現在已準備好供處理,並且返回到圖10中的框1004。返回到判別框1102,如果過程推斷腳本先前已運行,則處理在判別框1108繼續。在判別框1108,判斷腳本是否在處理過程中失敗。該信息可從註冊表中獲得。如果腳本未失敗,則腳本已準備好供處理並返回到圖10中的框1004。然而,如果腳本失敗,則處理在框1110繼續。在框1110,腳本引擎可通過主機程序通知用戶腳本先前已失敗。這一通知允許用戶決定是繼續該腳本還是退出該腳本。如上文結合圖8所提到的,主機程序可以用各種方式處理該請求,取決於輸入的風格(如,語音、命令行)。一旦從用戶接收到另外的輸入,腳本或者返回到圖10的框1004供處理,或者中止該腳本。返回到圖10的框1004,檢索來自腳本的一行。處理在判別框1006繼續。在判別框1006,判斷該行是否包含任何約束。約束可用預定義的開始字符(例如,括號「[」]]]]]]和對應的結束字符(例如,關閉括號「))))))」)來檢測。如果該行包括約束,則處理在框1008繼續。在框1008,應用該行中包括的約束。一般而言,約束提供了管理工具框架內的一種機制,以指定用於腳本中輸入的參數的類型以及指定應當在該參數上執行的確認邏輯。該約束不僅應用於參數,也適用於腳本中輸入的任一類型的構造,例如變量。由此,約束提供了解釋環境內的一種機制,以指定數據類型以及確認參數。在傳統的環境中,系統管理員無法形式上測試腳本內輸入的參數。應用約束的一個示例性過程在圖12中示出。在判別框1010,判斷來自腳本的該行是否包括內建能力。內建能力是不由核心引擎執行的能力。內建能力可以使用小命令來處理,或者使用諸如內嵌函數來處理。如果該行不具有內建能力,則處理在判別框1014繼續。否則,處理在框1012繼續。在框1012,處理在腳本的行上提供的內建能力。示例內建能力可包括諸如「if」語句、「for」循環、開關等控制構造的執行。內建能力也可包括賦值類型語句(例如,a=3)。一旦處理了內建能力,處理在判別框1014繼續。在判別框1014,判斷腳本的行是否包括命令串。該判斷基於行上的數據是否與註冊的命令串相關聯並且是否與潛在的小命令調用的句法相關聯。如上所述,命令串和腳本的處理可以在本質上是遞歸的,因為腳本可包括命令串,而命令串可執行小命令,小命令本身是腳本。如果行不包括命令串,則處理在判別框1018。否則,處理在框1016繼續。在框1016,處理命令串。總體上,命令串的處理包括由語法分析器識別小命令類,以及將對應的小命令對象傳遞到核心引擎以供執行。命令串也可包括管道化的命令串,它被語法分析成若干個別的小命令對象,並由核心引擎個別地處理。下文結合圖14描述用於處理命令串的一個示例性過程。一旦處理了命令串,處理在判別框1018繼續。在判別框1018,判斷腳本中是否有另一行。如果腳本中有另一行,則處理循環回到框1004,並如上文在框1004-1016中描述的繼續。否則,處理完成。圖12示出了應用框1008中的約束的示例性過程。該過程在框1201開始,檢測到腳本或命令行的命令串中的約束。當約束在腳本內時,約束和相關聯的構造可在同一行上出現,或在單獨的行上出現。當約束在命令串內時,約束和相關聯的構造在行指示符(如,回車鍵)的末端之前出現。處理在框1202繼續。在框1202,從解釋環境中獲取約束。在一個示例性管理工具環境中,語法分析器對輸入進行解碼,並確定約束的出現。約束可以來自以下類別之一謂詞偽指令、數據確認偽指令、數據生成偽指令、處理偽指令、編碼偽指令和文檔編制偽指令。在一個示例性語法分析句法中,偽指令用方括號包圍,並且描述了它們之後的構造。構造可以是函數、變量、腳本等等。如下文將描述的,儘管使用了偽指令,然而允許腳本作者簡單地鍵入腳本或命令行內(即,解釋環境)的參數並在參數上執行處理,而無需腳本作者生成任何底層邏輯。處理繼續到框1204。在框1204,所獲取的約束儲存在相關聯的構造的元數據中。相關聯的構造被標識為遇到一個或多個屬性標記(表示約束的標記)之後的第一個非屬性標記。處理繼續到框1206。在框1206,只要在腳本或命令行內遇到構造,就將元數據內定義的約束應用到該構造。約束可包括數據類型、謂詞偽指令1210、文檔編制偽指令1212、語法分析偽指令1214、數據生成偽指令1216、數據確認偽指令1218以及對象處理和編碼偽指令1220。指定數據類型的約束可指定管理工具框架所運行的系統支持的任何數據類型。謂詞偽指令1210是只是處理是否應當發生的偽指令。由此,謂詞偽指令1210確保環境對於執行是正確的。例如,腳本可包括以下謂詞偽指令[PredicateScript(″isInstalled″,″ApplicationZ″)]該謂詞偽指令確保在運行腳本前計算裝置上安裝了正確的應用程式。通常,系統環境變量可被指定為謂詞偽指令。來自偽指令類型1212-1220的示例性偽指令在表1-5中示出。腳本的處理然後完成。由此,應用解釋環境內的類型和約束的本過程允許系統管理員容易地指定類型、指定確認要求等,而無需書寫用於執行這一處理的底層邏輯。以下是在如下指定的命令串上執行的約束處理的一個示例[Integer][ValidationRange(3,5)]$a=4有兩種通過由「[]」表示的屬性標記指定的約束。第一個屬性標記指示了該變量是整數類型,而第二個屬性標記指示變量$a的值必須包括在3到5之間。示例命令串確保了如果變量$a在隨後的命令串或行中被賦值,則將對照兩個約束來校驗變量$a。由此,以下命令串的每一個都將導致錯誤$a=231$a=″apple″$a=$(get/location)約束在管理工具框架的不同階段被應用。例如,適用性偽指令、文檔編制偽指令以及語法分析準則偽指令在語法分析器內非常早期的階段處理。數據生成偽指令和確認偽指令一旦在語法分析器完成了對所有輸入參數的語法分析之後在引擎內處理。以下表格示出了各種類別的代表性偽指令,以及由管理工具環境響應於偽指令執行的處理的解釋。表1適用性偽指令表2語法分析管道偽指令表3文檔編制偽指令表4數據確認偽指令表5處理和編碼偽指令當示例性管理工具在.NETTM框架內運作時,每一類別具有從基礎類別類(如,CmdAttribute)導出的積累。該基礎類別類從System.Attribute類導出。每一類別具有預定義的函數(如,attrib.func),它由語法分析器在類別處理期間調用。腳本作者可創建從自定義類別類(如,CmdCustomAttribute)導出的自定義類別。腳本作者也可通過從類別的基礎類別類導出偽指令類,然後用其實現覆蓋預定義的函數,來擴展現有的類別。腳本作者也可覆蓋偽指令,並向預定義的偽指令集添加新的偽指令。這些偽指令的其它處理可以儲存在可由語法分析器訪問的外部數據存儲中。管理工具框架查找註冊的類別,並對該類別中的每一偽指令調用函數(如,ProcessCustomDirective)。由此,類別處理的順序通過將類別執行信息儲存在持久存儲中可以是動態的。在不同的處理階段,語法分析器在持久存儲中進行核查,以判斷是否有任何元數據類別需要在那時執行。這允許類別通過從持久存儲中移除該類別條目來容易地被排斥。命令串的示例性處理現在描述用於處理命令串的一個示例性過程。圖13是概括地示出了通過圖2所示的語法分析器220和核心引擎224處理命令串1350的功能流程圖。示例性命令串1350管道化了若干命令(即,process(進程)命令1360、where(其中)命令1362、sort(排序)命令1364和table(表格)命令1366)。命令1350可將輸入參數傳輸到命令的任一個(例如,「handlecount>400」被傳遞到where命令1362)。可以注意到,process命令1360不具有任何相關聯的輸入參數。在過去,每一命令負責對與該命令相關聯的輸入參數進行語法分析、判斷輸入參數是否有效、並且如果輸入參數無效則發出出錯消息。由於命令通常由各個程式設計師書寫,因此命令行上輸入參數的句法不是非常一致的。另外,如果出現出錯,則即使是對同一差錯,出錯消息在命令之間也不是非常一致的。例如,在UNIX環境中,「ls」命令和「ps」命令在它們之間具有許多不一致性。儘管兩者都接受選項「-w」,然而「-w」選項由「ls」命令用於表示頁的寬度,而「-w」選項由「ps」命令表示列印出寬的輸出(本質上,忽略頁寬度)。與「ls」和「ps」命令相關聯的幫助頁面也具有若干不一致性,如在一個中有加粗的選項而在另一個中沒有、在一個中對選項按字母表排序而在另一個中沒有、需要某些選項具有短劃線而某些選項沒有。本發明的管理工具框架提供了更一致的方法,並最小化了每一開發者必須書寫的重複代碼量。管理工具框架200提供了句法(如,語法)、對應的語義(如,字典)、以及參考模型,以使開發者能夠容易地利用管理工具框架200提供的公用功能。在進一步描述本發明之前,提供對貫穿本說明書出現的其它術語的定義。輸入參數指小命令的輸入欄位。形式參數指傳遞到小命令的輸入參數,它等效於argv數組中的單個串,或作為小命令對象中的單個元素傳遞。如下文所描述的,小命令提供了用於指定語法的機制。該機制可以直接或間接提供。形式參數是命令名後的選項、選項形式參數或操作數之一。形式參數的示例基於以下命令行給出Findstr/i/d:\winnt;\winnt\system32aa*b*.ini在以上命令行中,「findstr」是形式參數0,「/i」是形式參數1,「/d:\winnt;\winnt\system32」是形式參數2,「aa*b」是形式參數3,「*.ini」是形式參數4。「選項」是小命令的形式參數,通常用於指定對程序的默認行為的改變。繼續上述命令行的示例,「/i」和「/d」是選項。「選項形式參數」是跟隨在某些選項後的一個參數。在某些情況下,「選項形式參數」作為選項被包括在同一形式參數串內。在其它情況下,選項形式參數作為下一形式參數被包括。再次參考上述命令行,「winnt;\winnt\system32」是選項形式參數。「操作數」是小命令的形式參數,通常向程序提供完成程序處理所必需的信息的對象。在命令行中,操作數一般在選項之後。再次參考上述示例命令行,「aa*b」和「*.ini」是操作數。「可語法分析流」包括形式參數。參考圖13,語法分析器220將可語法分析流(如,命令串1350)語法分析成要素部分1320-1326(如,where部分1322)。每一部分1320-1326與小命令1330-1336之一相關聯。語法分析器220和引擎224執行各種處理,如語法分析、參數確認、數據生成、參數處理、參數編碼和參數文檔編制。由於語法分析器220和引擎224在命令行的輸入參數上執行公用的功能,因此管理工具框架200能夠向用戶發出一致的出錯消息。如可以認識到的,依照本發明的管理工具框架書寫的可執行小命令1330-1336需要比現有管理環境中的命令更少的代碼。每一可執行小命令1330-1336使用其相應的構成部分1320-1326來標識。另外,每一可執行小命令1330-1336輸出對象(由箭頭1340、1342、1344和1346表示),它們是作為對下一管道化小命令的輸入對象(由箭頭1341、1343和1345表示)的輸入。這些對象可以通過向對象傳遞引用(例如,句柄)來輸入。可執行小命令1330-1336然後可在所傳入的參數上執行額外的處理。圖14是更詳細地示出了適於在處理圖9所示的輸入的過程中使用的命令串的處理的邏輯流程圖。命令串處理在框1401開始,其中語法分析器或腳本引擎識別輸入中的命令串。一般而言,核心引擎執行小命令的數據流的設置和排序。對一個小命令的設置和排序在下文描述,但是可適用於管道中的每一小命令。處理在框1404繼續。在框1404,識別小命令。小命令的識別可以通過註冊來進行。核心引擎判斷小命令是本地還是遠程的。小命令可以在以下位置中執行1)在管理工具框架的應用程式域內;2)在與管理工具框架相同的進程的另一應用程式域內;3)在同一計算裝置的另一進程內;或者4)在遠程計算裝置內。在同一進程內操作的小命令之間的通信是通過對象來進行的。在不同的進程內操作的小命令之間的通信是通過串行化的結構化數據格式來進行的。一個示例性串行化的結構化數據格式基於可擴充標記語言(XML)。處理在框1406繼續。在框1406,創建小命令對象的實例。用於創建小命令的實例的一個示例性過程在下文結合圖15描述。一旦創建了小命令對象,處理在框1408繼續。在框1408,填充與小命令對象相關聯的屬性。如上所述,開發者聲明小命令類內或外部源內的屬性。簡言之,管理工具框架基於對屬性聲明的名字和類型將傳入的對象解碼成從小命令類例示的小命令。如果類型不同,則可通過擴展數據類型管理器來強制類型。如先前所提到的,在管道化的命令串中,每一小命令的輸出可以是對象句柄的列表。下一小命令可輸出這一對象句柄列表、執行處理、並將另一對象句柄列表傳遞到下一小命令。另外,如圖7所示,輸入參數可以被指定為來自命令行。用於填充與小命令相關聯的屬性的一個示例性方法在下文結合圖16描述。一旦填充了小命令,處理在框1410繼續。在框1410,執行小命令。總體上,由小命令提供的處理至少被執行一次,這包括對小命令的每一輸入對象的處理。由此,如果小命令是管道化的命令串中的第一個小命令,則處理被執行一次。對於後續的小命令,對傳遞到小命令的每一對象執行處理。用於執行小命令的一個示例性方法在下文結合圖5描述。當輸入參數僅來自命令行時,小命令的執行使用基礎小命令類提供的默認方法。一旦小命令完成執行,處理前進到框1412。在框1412,小命令被清除。這包括調用相關聯的小命令對象的析構函數,它負責解除分配存儲器等等。然後,命令串的處理完成。用於創建小命令對象的示例性過程圖15所示是用於創建適於在圖14所示的命令串的處理中使用的小命令對象的示例性過程的邏輯流程圖。在這一點上,開發了小命令數據結構,並指定了屬性和期望的輸入參數。小命令被編譯並已被註冊。在註冊期間,類名(即,小命令名)被寫入註冊存儲中,並且儲存了與小命令相關聯的元數據。過程1500在框1501開始,語法分析器接收到指示小命令的輸入(例如,按鍵)。語法分析器可通過從註冊表內查找該輸入,並將該輸入與註冊的小命令之一相關聯,以將輸入識別為小命令。處理前進到框1504。在框1504,讀取與小命令對象相關聯的元數據。元數據包括與小命令相關聯的偽指令的任一個。偽指令可應用於小命令本身或一個或多個參數。在小命令註冊期間,註冊代碼將元數據註冊到永久存儲中。元數據可以儲存在串行化格式的XML文件、外部資料庫等中。類似於腳本處理過程中偽指令的處理,每一類別的偽指令在不同的階段處理。每一元數據偽指令處理其自己的錯誤處理。處理在框1506繼續。在框1506,基於識別的小命令類例示小命令對象。處理在框1508繼續。在框1508,獲取關於小命令的信息。這可以通過反射或其它手段發生。信息是關於期望的輸入參數。如上所述,被聲明為公用的參數(例如,公用串Name730)對應可以是在命令行上的命令串中指定或在輸入流中提供的期望輸入參數。管理工具框架通過圖18描述的擴展類型管理器提供用於向調用者返回信息(在需要的基礎上)的公用接口。處理在框1510繼續。在框1510,應用適用性偽指令(例如,表1)。適用性偽指令確保了該類在某些機器角色和/或用戶角色中使用。例如,某些小命令可能只能由域管理員使用。如果未滿足適用性偽指令之一中指定的約束,則出現差錯。處理在框1512繼續。在框1512,使用元數據來提供智能感知。在處理的這一點上,尚未輸入整個命令串。然而,管理工具框架知道可用的小命令。一旦確定了小命令,則管理工具框架知道在小命令對象上反射所允許的輸入參數。由此,一旦提供了小命令名字的可消除歧義的部分,則管理工具框架可自動完成小命令,然後一旦在命令行上鍵入了輸入參數的可消除歧義的部分,則自動完成輸入參數。自動完成可以在一旦輸入參數的部分能夠明確地識別輸入參數之一之後發生。另外,自動完成也可在小命令名字和操作數上發生。處理在框1514繼續。在框1514,處理等待,直到輸入了小命令的輸入參數。這可在一旦用戶例如通過敲擊回車鍵指示了命令串的結束之後發生。在腳本中,新行指示命令串的結束。這一等待可包括從用戶獲取關於參數的額外信息並應用其它偽指令。當小命令是管道化參數之一時,處理可立即開始。一旦提供了必要的命令串和輸入參數,處理完成。用於填充小命令的示例性過程用於填充小命令的示例性過程在圖16中示出,並現在結合圖5來描述。在一個示例性管理工具框架中,核心引擎執行處理來填充小命令的參數。處理在創建了小命令的實例之後在框1601開始。處理在框1602繼續。在框1602,檢索小命令中聲明的參數(例如,ProcessName(進程名))。基於對小命令的聲明,核心引擎識別出傳入的輸入對象將提供名為「ProcessName」的屬性。如果傳入的屬性的類型不同於參數聲明中指定的類型,則該類型將通過擴展類型管理器來強制。強制數據類型的過程在下文名為「示例性擴展類型管理器處理」一節中解釋。處理繼續到框1603。在框1603,獲取與參數相關聯的屬性。屬性標識了參數的輸入源是否為命令行或者它是否來自管道。處理繼續到判別框1604。在判別框1604,判斷屬性是否將輸入源指定為命令行。如果輸入源是命令行,則處理在框1609繼續。否則,處理在判別框1605繼續。在判別框1605,判斷是應當使用聲明中指定的屬性名還是應當使用屬性名的映射。這一判斷基於命令輸入是否指定了參數的映射。以下行示出了參數「ProcessName」到傳入對象的成員「foo」的示例性映射$get/process|wherehan*-gt500|stop/process-ProcessName<-foo處理在框1606繼續。在框1606,應用映射。映射將期望參數的名字從「ProcessName」替換成「foo」,它然後由核心引擎用於對傳入對象進行語法分析並識別正確的期望參數。處理在框1608繼續。在框1608,查詢擴展類型對象以查找傳入對象內的參數的值。如結合擴展類型管理器所解釋的,擴展類型管理器採用參數名並使用反射來識別傳入對象內具有參數名的參數。如有必要,擴展類型管理器也可對參數執行其它處理。例如,擴展類型管理器可通過上述的轉換機制將數據類型強制成期望的數據類型。處理繼續到框1610。返回到框1609,如果屬性指定了輸入源是命令行,則獲取來自命令行的數據。獲取來自命令行的數據可以通過擴展類型管理器來執行。處理然後繼續到判別框1610。在判別框1610,判斷是否存在另一期望參數。如果存在另一期望參數,則處理循環回到框1602,並如上所述地繼續。否則,處理完成並返回。由此,如圖所示,小命令擔當用於切碎傳入數據以獲取期望參數的模版。另外,期望參數是在不知道提供期望參數的值的傳入對象的類型的情況下獲取的。這比傳統的管理環境要困難得多。傳統的管理環境是緊綁定的,並需要該對象的類型在編譯時是已知的。另外,在傳統環境中,期望參數將按傳值或按傳址被傳遞到函數。由此,本發明的語法分析(例如,「切碎」)機制允許程式設計師指定參數的類型,而無需他們具體地知道如何獲取這些參數的值。例如,給定對小命令Foo的以下聲明ClassFoo:Cmdlet{stringName;BoolRecurse;}命令行句法可以是以下的任一種$Foo-Name:(string)-Recurse:True$Foo-Namestring-RecurseTrue$Foo-Name(string)該組規則可由系統管理員修改,以產生期望的句法。另外語法分析器可支持多組規則,使得用戶可使用一個以上句法。本質上,與小命令構造相關聯的語法(例如,stringName和BoolRecurse)驅動語法分析器。一般而言,語法分析偽指令描述了作為命令串輸入的參數應當如何映射到小命令對象中識別的期望參數。核查輸入參數類型以判斷是否正確。如果輸入參數類型不正確,則可強制輸入參數成為正確。如果輸入參數類型不正確並且不能被強制,則列印使用出錯。使用出錯允許用戶變得知曉期望的正確句法。使用出錯可從文檔編制偽指令獲取描述句法的信息。一旦映射或驗證了輸入參數類型,則填充小命令對象實例中對應的成員。當填充成員時,擴展類型管理器提供了對輸入參數類型的處理。簡言之,處理可包括屬性路徑機制、關鍵字機制、比較機制、轉換機制、通配符處理機制、關係機制以及屬性集機制。這些機制的每一個在下文名為「擴展類型管理器處理」一節中詳細描述,它也包括了說明性示例。用於執行小命令的示例性過程用於執行小命令的示例性過程在圖7中示出,並現在描述。在一個示例性管理工具環境中,核心引擎執行小命令。如上所述,對每一輸入對象執行第二方法1440內的代碼1442。處理在框1701開始,其中已填充了小命令。處理在框1702繼續。在框1702,檢索來自代碼542的語句用於執行。處理在判別框1704繼續。在判別框1704,判斷語句內是否包括掛鈎。簡單地轉向圖5,掛鈎可包括調用由核心引擎提供的API。例如,圖5中小命令500的代碼542內的語句550調用了指定必要參數、第一個串(如,「PID=」)以及參數(如,PID)的confirmprocessing(確認處理)API。返回到圖17,如果語句包括掛鈎,則處理繼續到框1712。由此,如果指定了調用confirmprocessingAPI的指令,則小命令在由操作環境提供的備選執行模式中操作。否則,處理在框1706繼續,並且執行在「正常」模式中繼續。在框1706,處理該語句。處理然後前進到判別框1708。在框1708,判斷代碼是否包括另一語句。如果有另一語句,則處理循環回到框1702,以獲取下一語句,並如上所述地前進。否則,處理繼續到判別框1714。在判別框1714,判斷是否有另一輸入對象要處理。如果有另一輸入對象,則處理繼續到框1716,其中用來自下一對象的數據填充小命令。對下一對象執行圖16中描述的填充過程。處理然後循環回到框1702,並如上所述地前進。一旦處理了所有的對象,用於執行小命令的過程完成並返回。返回到判別框1704,如果語句包括掛鈎,則處理繼續到框1712。在框1712,處理由管理工具環境提供的附加特徵。處理在判別框1708繼續,並如上所述地繼續。現在結合圖6所示的示例性數據結構600描述框1712內執行的附加處理。如上所述,在命令基類600內,可以聲明對應於附加的期望輸入參數的參數(如,開關)。開關包括預定義的串,並且當被識別時,指示核心引擎向小命令提供附加功能。如果在命令輸入中指定了參數verbose610,則執行verbose語句614。以下是包括verbose開關的命令行的一個示例$get/process|where″han*-gt500″|stop/process-verbose一般而言,當在命令輸入內指定「-verbose」時,核心引擎對每一輸入對象執行該命令,並將對每一輸入對象執行的實際命令轉發到主機程序用於顯示。以下是當在示例性管理工具環境中執行上述命令行時生成的輸出的示例$stop/processPID=15$stop/processPID=33如果在命令輸入中指定了參數whatif620,則執行whatif語句624。以下是包括whatif開關的命令行的示例$get/rocess|where″han*-get500″|stop/process-whatif一般而言,當指定「-whatif」時,核心引擎實際上不執行代碼542,而是相反將要被執行的命令發送到主機程序用於顯示。以下是當在本發明的管理工具環境中執行上述命令行時生成的輸出示例$stop/processPID=15$stop/processPID=33如果在命令輸入中指定了參數confirm630,則執行confirm語句634。以下是包括confirm開關的命令行的一個示例$get/process|where″han*-get500″|stop/process-confirm一般而言,當指定了「-confirm」時,核心引擎請求關於是否繼續命令的額外用戶輸入。以下是當在本發明的管理工具環境中執行上述命令行時生成的輸出示例。$stop/processPID15Y/NY$stop/processPID13Y/NN如上所述,示例性數據結構600也可包括判斷所請求的用於執行的任務是否應當被允許的安全性方法640。在傳統的管理環境中,每一命令負責核查執行該命令的人是否具有足夠的特權來執行該命令。為執行這一核查,需要廣泛的代碼來訪問來自若干來源的信息。由於這些複雜度,許多命令不執行安全性核查。本發明的管理工具環境的發明人認識到,當在命令輸入中指定任務時,用於執行安全性核查的必要信息在管理工具環境內是可用的。因此,管理工具框架執行安全性核查,而不需要來自工具開發者的複雜代碼。該安全性核查可對在其小命令內定義掛鈎的任一小命令執行。或者,掛鈎可以是可任選的輸入參數,它可在命令輸入中指定,類似於上述的verbose參數。實現安全性核查以支持基於角色的認證,它一般被定義為基於用戶的角色控制哪些用戶具有對資源的訪問的系統。由此,向每一角色分配對不同資源的某些訪問權限。然後將用戶分配給一個或多個角色。一般而言,基於角色的認證集中在三項上原則、資源和行動。原則標識了誰請求了在資源上執行行動。本發明的發明人認識到,所請求的小命令對應於要執行的行動。另外,發明人理解,其中執行管理工具框架的進程的所有者對應於原則。此外,發明人理解,資源是在小命令中指定的。因此,由於管理工具框架具有對這些項的訪問,因此發明人認識到,可以從管理工具框架內執行安全性核查,而不需要工具開發者實現安全性核查。安全性核查的操作可以在當小命令內請求附加功能的任一時刻通過使用諸如confirmprocessingAPI等掛鈎來執行。或者,安全性核查可以通過核查在命令行上是否輸入了類似於verbose、whatif和confirm等安全開關來執行。對於任一實現,checkSecurity(核查安全性)方法調用了由安全性進程(未示出)提供的API,該安全性進程提供了用於判斷誰被允許的一組API。安全性進程採用由管理工具框架提供的信息,並提供指示任務是否可被完成的結果。管理工具框架然後可提供出錯或僅僅停止任務的執行。由此,通過在小命令內提供掛鈎,開發者可使用由管理工具框架提供的附加處理。示例性擴展類型管理器處理如上文結合圖18提到的,擴展類型管理器可在提供的對象上執行附加的處理。附加處理可以在語法分析器220、腳本引擎222或管道處理器402處執行。附加處理包括屬性路徑機制、關鍵字機制、比較機制、轉換機制、通配符處理機制、關係機制以及屬性集機制。本領域的技術人員可以理解,擴展類型管理器也可以用其它處理來擴展,而不脫離本發明的範圍。現在描述附加處理機制的每一個。首先,屬性路徑機制允許一個串導航對象的屬性。在當前反射系統中,查詢可查詢對象的屬性。然而,在本發明的擴展類型管理器中,可以指定提供到連續的對象屬性的導航路徑的串。以下是屬性路徑P1.P2.P3.P4的說明性句法。每一組件(例如,P1、P2、P3和P4)包括可表示屬性、具有參數的方法、不是有參數的方法、欄位、XPATH等等的串。XPATH指定了查詢串,以搜索元素(例如,「/Foo@=13」。在該串內,可以包括特殊的字符以具體地指示組件的類型。如果串不包含特殊的字符,則擴展類型管理器可執行查找以確定組件的類型。例如,如果組件P1是對象,則擴展類型管理器可查詢P2是否為對象的屬性、方法上的對象、對象的欄位或屬性集。一旦擴展類型管理器標識了P2的類型,則執行依照該類型的處理。如果組件不是上述類型之一,則擴展類型管理器可進一步查詢擴展源,以判斷是否有將P1的類型轉換成P2的類型的轉換功能。現在將使用說明性命令串描述這些和其它查找,並示出代表性輸出。以下是包括屬性路徑的說明性串$get/process|/wherehand*-gt>500|format/tablename.toupper,ws.kb,exe.*ver.*.description.tolower.trunc(30)在上述說明性串中,有三個屬性路徑(1)「name.toupper」;(2)「ws.kb」;以及(3)「exe*.ver*.description.tolower.trunc(30)」。在描述這些屬性路徑之前,應當注意,「name」、「ws」和「exe」指定了表格的屬性。另外,應當注意,這些屬性的每一個是傳入對象的直接屬性,它們最初由「get/process」生成,然後通過各種小命令管道化。現在描述三個屬性路徑的每一個所涉及的處理。在第一個屬性路徑(即,「name.toupper」)中,name是傳入對象的直接屬性,並且本身也是對象。擴展類型管理器使用上述優先級查找來查詢系統,以確定toupper的類型。擴展類型管理器發現toupper不是屬性。然而,toupper可以是由串類型繼承的方法,以將串內的小寫字母轉換成大寫字母。或者,擴展類型管理器可能已查詢了擴展的元數據,以判斷是否有可將name對象轉換成大寫的第三方代碼。在找出組件類型之後,依照該組件類型執行處理。在第二個屬性路徑中(即,「ws.kb」),「ws」是傳入對象的直接屬性,並本身也是對象。擴展類型管理器確定「ws」是整數。然後,擴展類型管理器查詢kb是否是整數的屬性、kb是否是整數的方法、並最終查詢是否有任何代碼知道如何採用整數並將該整數轉換成kb類型。註冊第三方代碼以執行該轉換,並且執行該轉換。在第三個屬性路徑中(即,「exe*.ver*.description.tolower.trunc(30)」),有若干個組件。第一個組件(「exe*」)是傳入對象的直接屬性,並且也是對象。再一次,擴展類型管理器在查找查詢中向下前進,以處理第二個組件(「ver*」)。「exe*」對象不具有「ver*」屬性或方法,因此擴展類型管理器查詢擴展的元數據,以判斷是否有被註冊來將可執行名字轉換成版本的任何代碼。對於該示例,存在這一代碼。代碼可採用可執行的名字串,並使用它來打開文件,然後訪問版本塊對象,並返回版本塊對象的描述屬性(第三個組件(「description」))。擴展類型管理器然後對第四個組件(「tolower」)和第五個組件(「trunc(40)」)執行該同一查找機制。由此,如所示,擴展類型管理器可在命令串上執行相當精細的處理,而無需管理員書寫任何特定代碼。表1示出了對說明性串生成的輸出。Name.toupperws.kbexe*.ver*.description.tolower.trunc(30)ETCLIENT29,964etclientCSRSS6,944SVCHOST28,944generichostprocessforwin32OUTLOOK18,556officeoutlookMSMSGS13,248messenger表1另一查詢機制1824包括關鍵字。關鍵字標識了產生唯一數據類型的實例的一個或多個屬性。例如,在資料庫中,一列可以被標識為可唯一地標識每一行(例如,社會保障號)的關鍵字。關鍵字儲存在與數據類型相關聯的類型元數據1840中。該關鍵字然後可由擴展類型管理器在處理該數據類型的對象時使用。數據類型可以是擴展的數據類型或現有的數據類型。另一查詢機制824包括比較機制。比較機制比較兩個對象。如果兩個對象直接支持比較功能,則執行直接支持的比較功能。然而,如果沒有一個對象支持比較功能,則擴展類型管理器可在類型元數據中查找被註冊來支持兩個對象之間的比較的代碼。下文在表2中示出了調用比較機制的一系列說明性命令行串,以及對應的輸出。$$a=$(get/date)$start/sleep5$$b=$(get/datecompare/time$a$bTicks:51196579Days:0Hours:0Milliseconds:119Minutes:0Seconds:5TotalDays:5.92552997685185E-05TotalHours:0.00142212719444444TotalMilliseconds:5119.6579TotalMinutes:0.00853276316666667TotalSecond:5.1196579表2書寫compare/time小命令以比較兩個datetime對象。在這一情況下,DateTime對象支持IComparable接口。另一查詢機制1824包括轉換機制。擴展類型管理器允許註冊規定其執行特定轉換的能力的代碼。然後,當輸入類型A的對象,並且小命令指定類型B的對象,擴展類型管理器可使用註冊的轉換之一執行轉換。擴展類型管理器可執行一系列轉換以將類型A強制成類型B。上述屬性路徑(「ws.kb」)示出了轉換機制。另一查詢機制1824包括通配符處理機制。通配符處理指的是串內通配符字符。通配符處理機制輸入具有通配符字符串並產生一組對象。擴展類型管理器允許要被註冊指定通配符處理的代碼。上述屬性路徑(「exe*.ver*.description.tolower.trunc(30)」)示出了通配符處理機制。註冊的進程可提供對文件名、文件對象、傳入屬性等的通配符處理。另一查詢機制1824包括屬性集機制。屬性集機制允許對一組屬性定義名字。管理員然後可指定命令串內的名字,以獲得屬性集。屬性集可以用各種方式來定義。在一種方法中,諸如「?」等預定義參數可以作為對小命令的輸入參數而被輸入。操作環境在識別預定義的參數之後列出傳入對象的所有屬性。列表可以是允許管理員容易地核查(例如,「點擊」)期望的屬性以及對屬性集命名的GUI。屬性集信息然後可儲存在擴展的元數據中。以下在表3中示出了調用屬性集機制的說明性串以及對應的輸出$get/process|wherehan*-gt>500|format/tableconfig在這一說明性串中,定義了名為「config」屬性集,以包括名字屬性、進程id屬性(Pid)以及優先級屬性。該表的輸出示出如下。NamePidPriorityETClient3528Normalcsrss528Normalsvchost848NormalOUTLOOK2,772Normalmsmsgs2,584Normal表3另一查詢機制1824包括關係機制。與支持一種關係(即,繼承)的傳統類型系統相反,關係機制支持表達類型之間的一個以上關係。再一次,這些關係被註冊。關係可包括找出對象消耗的項,或找出消耗對象的項。擴展類型管理器可訪問描述各種關係的本體論。使用擴展的元數據和代碼,可描述用於訪問諸如OWL、DAWL等的任何本體論服務的規範。以下是使用關係機制的說明性串的一部分.OWL″string″。「OWL」標識符標識了本體論服務,而「string」指定了本體論服務內的特定串。由此,擴展類型管理器可訪問本體論服務提供的類型。用於顯示命令行數據的示例性過程本發明的機制提供了一種數據驅動的命令行輸出。數據的格式化和輸出由小命令管道中的一個或多個小命令提供。通常,這些小命令包括在上文結合圖2描述的非管理小命令中。小命令可包括格式化(format)小命令、標記(markup)小命令、轉換(convert)小命令、變換(transform)小命令以及輸出(out)小命令。圖19圖形地描繪了管道內這些小命令的示例性序列1901-1907。第一序列1901示出輸出小命令1910為管道內的最後一個小命令。以上文對於其它小命令描述的同一方式,輸出小命令1910接受由管道內的其它小命令生成和處理的管道對象流。然而,與大多數小命令相反,輸出小命令1910不為其它小命令發出管道對象。相反,輸出小命令1910負責呈現/顯示由管道生成的結果。每一輸出小命令1910與一輸出目的地相關聯,如設備、程序等。例如,對於控制臺設備,輸出小命令1910可被指定為out/console(輸出/控制臺);對於內聯網瀏覽器,輸出小命令1910可被指定為out/browser(輸出/瀏覽器);對於窗口,輸出小命令1910可被指定為out/window(輸出/窗口)。每一特定的輸出小命令熟悉其相關聯目的地的性能。場所信息(例如,日期和貨幣格式)由輸出小命令1910處理,除非管道中轉換小命令超過輸出小命令。在這一情況下,轉換小命令處理本地信息。每一主機負責支持某些輸出小命令,如out/console。主機也支持任一目標專用主機小命令(例如,out/chart,它將輸出定向到由電子表格應用程式提供的圖表)。另外,主機負責提供結果的默認處理。這一序列中的輸出小命令可決定通過調用其它輸出處理小命令(如格式化/標記/轉換/變換)來實現其行為。由此,輸出小命令可隱含地將序列1901修改成其它序列的任一個,或可添加其自己的附加格式化/輸出小命令。第二序列1902示出了格式化小命令1920在輸出小命令1910之前。對於這一序列,格式化小命令1920接受由管道內的其它小命令生成和處理的管道對象流。總體上,格式化小命令1920提供了選擇顯示屬性的方式以及指定諸如形狀、列寬度、頁眉、頁腳等頁面布局的方式。形狀可包括表格、寬列表、欄式列表等等。另外,格式化小命令1920可包括總計或總和的計算。由格式化小命令1920執行的示例性處理在下文結合圖20描述。簡言之,格式化小命令除發出管道對象之外還發出格式化對象。格式化小命令可由輸出小命令(例如,序列1902中的輸出小命令1902)通過擴展類型管理器或其它機制來向下遊識別。輸出小命令1920可選擇使用發出的格式化對象或可選擇忽略它們。輸出小命令基於顯示信息中指定的頁面布局數據確定頁面布局。在某些情況下,對頁面布局的修改可由輸出小命令指定。在一個示例性過程中,輸出小命令可通過找出預定數量對象的每一屬性的最大長度(例如,50)並將列寬度設為該最大長度,來確定未指定的列寬度。格式化對象包括格式化信息、頁眉/頁腳信息等等。第三序列1903示出了格式化小命令1920在輸出小命令1910之前。然而,在第三序列1903中,在格式化小命令1920和輸出小命令1910之間管道化了標記小命令1930。標記小命令1930提供了用於向選擇的參數添加屬性注釋(例如,字體、顏色)的機制。由此,標記小命令1930出現在輸出小命令1910之前。屬性注釋可以使用「陰影屬性袋(shadowpropertybag)」來實現,或通過在屬性袋中添加自定義名字空間中的屬性注釋來實現。只要標記注釋可在處理格式化小命令1920的過程中維護,標記小命令1930就可出現在格式化小命令1920之前。第四序列1904再次示出了格式化小命令1920在輸出小命令1910之前。然而,在第四序列1904中,在格式化小命令1920和輸出小命令1910之間管道化了轉換小命令1940。轉換小命令1940也被配置成處理由格式化小命令1920發出的格式化對象。轉換小命令1940將管道化的對象轉換成基於特定編碼的格式化對象。轉換小命令1940與該特定的編碼相關聯。例如,將管道化對象轉換成現用目錄對象(ADO)的轉換小命令1940可以在命令行上被聲明為「convert/ADO」。同樣,將管道化對象轉換成用逗號分隔的值(csv)的轉換小命令1940可在命令行上被聲明為「convert/csv」。某些格式化小命令1940(例如,convert/XML和convert/html)可以是阻斷的小命令,這意味著所有管道化對象在執行轉換之前接收。通常輸出小命令1920可確定是否使用由格式化對象提供的格式化信息。然而,當轉換小命令1920出現在輸出小命令1920之前時,實際的數據轉換已經在輸出小命令接收對象之前發生。因此,在這一情況下,輸出小命令不能忽略該轉換。第五序列1905示出了該順序的格式化小命令1920、標記小命令1930、轉換小命令1940以及輸出小命令1910。由此,這示出了標記小命令1930可發生在轉換小命令1940之前。第六序列1906示出了格式化小命令1920、特定轉換小命令(例如,convert/xml小命令1940′)、特定的變換小命令(例如,transfrom/xslt小命令1950)以及輸出小命令1910。convert/xml小命令1940′將管道化的對象轉換成可擴展標記語言(XML)文檔。transform/xslt小命令1950使用可擴充樣式語言(XSL)樣式表將XML文檔變換成另一XML文檔。變換過程通常被稱為可擴充樣式語言變換(XSLT),其中,XSL處理器讀取XML文檔,並遵循XSL樣式表中的指令來創建新的XML文檔。第七序列1907示出了格式化小命令1920、標記小命令1930、特定的轉換小命令(例如,convert/xml小命令1940′)、特定的變換小命令(例如,transform/xslt小命令1950)以及輸出小命令1910。由此,第七序列1907示出了令標記小命令1930在轉換小命令和變換小命令的上遊。圖20示出了由格式化小命令執行的示例性處理2000。格式化過程在由語法分析器和管道處理器以上述方式對格式化小命令進行語法分析和調用之後,在框2001開始。處理在框2002繼續。在框2002,接收管道對象,作為格式化小命令的輸入。處理在框2004繼續。在框2004,啟動查詢以識別管道化對象的類型。這一查詢由上文結合圖18描述的擴展類型管理器執行。一旦擴展類型管理器識別了對象的類型,則處理在框2006繼續。在框2006,在顯示信息中查找識別的類型。顯示信息的示例性格式在圖21中示出,並在下文描述。處理在框2008繼續。在判別框2008,確定是否在顯示信息中指定了識別的類型。如果顯示信息中沒有識別類型的條目,則處理完成。否則,處理在框2010繼續。在框2010,從顯示信息獲取與識別的類型相關聯的格式化信息。處理在框2012繼續。在框2012,在管道上發出信息。一旦信息被發出,處理完成。現在更詳細地描述可被發出的示例性信息。該信息可包括格式化信息、頁眉/頁腳信息以及組結束/開始信號對象。格式化信息可包括形狀、標籤、編號/項目符號、列寬度、字符編碼類型、內容字體屬性、頁長度、「按……分組」屬性名等等。這些的每一個可具有與其相關聯的附加指定。例如,形狀可指定形狀是表格、列表還是其它。標籤可指定是使用列標題、列表標籤還是其它。字符編碼可指定ASCII、UTF-8、Unicode等等。內容字體屬性可指定應用到顯示的屬性值的字體。如果內容字體屬性未被指定,則可使用默認字體屬性(例如,CourierNew,10磅)。頁眉/頁腳信息可包括頁眉/頁腳範圍、字體屬性、標題、小標題、日期、時間、頁編號、分隔符等等。例如,範圍可指定文檔、頁、組等。對頁眉或頁腳可指定另外的屬性。例如,對於組和文檔頁腳,另外的屬性可包括計算總和/總計的屬性或列、對象計數、用於總計和計數的標籤串等等。組結束/開始信號對象在格式化小命令檢測到「按……分組」屬性改變之後被發出。當發生這一情況時,格式化小命令將管道對象流作為先前已排序來處理,並且不對它們重新排序。組結束/開始信號對象可以散布在管道對象中。可對嵌套的排序指定多個「按……分組」屬性。格式化小命令也可發出包括最終的總和和總計的格式化結束對象。簡要地轉向圖21,示例性顯示信息2100是結構化的格式,並包含與定義的每一對象相關聯的信息(例如,格式化信息、頁眉/頁腳信息、「按……分組」屬性或方法)。例如,顯示信息2100可以是基於XML的。上述屬性的每一個然後可在顯示信息內指定。顯示信息2100內的信息可以由輸入的對象類型的所有者來填充。操作環境提供了允許所有者通過創建、刪除和修改條目來更新顯示信息的某些API和小命令。圖22是列出由於某些格式化小命令(例如,formate/table(格式化/表格)、format/list(格式化/列表)以及format/wide(格式化/寬))、標記小命令(例如,add/markup(添加/標記))、轉換小命令(例如,convert/text(轉換/文本)、convert/sv(轉換/sv)、convert/csv(轉換/csv)、convert/ADO(轉換/ADO)、convert/XML(轉換/XML))、變換小命令(例如,transform/XSLT(變換/XSLT))以及輸出小命令(例如,out/console(輸出/控制臺)、out/file(輸出/文件))的示例性句法2201-2213。圖23示出了由使用輸出處理小命令(例如,格式化小命令、轉換小命令和標記小命令)的各種管道序列的out/concole小命令呈現的結果。如上所述,可在管理工具環境內採用向命令行指令提供擴展功能的機制。然而,本領域的技術人員可以理解,該機制可以用於輸入命令行指令的各種環境中。例如,「whatif」功能可通過插入必要的指令被結合到獨立的命令中,以對「whatif」參數的命令行進行語法分析,並執行模擬模式處理。向命令行指令提供擴展功能的本機制與擴展功能的傳統機制相當不同。例如,在傳統的機制中,期望擴展功能的每一命令必須將代碼結合到命令中。命令本身然後必須對命令串進行語法分析以判斷是否提供了開關(例如,verbose、whatif)並相應地執行擴展功能。相反,本發明的機制允許用戶在命令串內指定形式參數,以執行用於特定小命令的擴展功能,只要小命令結合了到擴展功能的掛鈎。由此,本發明的機制最小化了系統管理員需要書寫的代碼量。另外,通過使用本機制,以統一的方式實現了擴展功能。儘管上文描述了具體實現和實施例的細節,然而這些細節旨在滿足法定的公開約束,而非限制所附權利要求書的範圍。由此,所附權利要求書所定義的本發明不限於上文所描述的具體特徵。相反,本發明是以落入所附權利要求書的正確範圍內、依照等效技術方案的原則適當解釋的其形式或修改的任一個要求保護的。權利要求1.在命令行操作環境中,一種計算機可執行方法,包括在第一執行模式或一備選執行模式中執行命令行中的每一命令,其中,在所述備選模式中執行所述命令是在所述命令包括在備選執行模式中執行的指令時發生的,所述備選執行模式由所述操作環境提供。2.如權利要求1所述的計算機可執行方法,其特徵在於,所述備選執行模式可視地顯示了執行所述命令的結果。3.如權利要求1所述的計算機可執行方法,其特徵在於,所述備選執行模式可視地顯示了執行所述命令的模擬結果。4.如權利要求1所述的計算機可執行方法,其特徵在於,所述備選執行模式在執行所述命令之前提示對執行所述命令的驗證。5.如權利要求1所述的計算機可執行方法,其特徵在於,所述備選執行模式執行安全核查,以判斷請求所述命令的執行的用戶是否具有足夠的特權來執行所述命令。6.如權利要求1所述的計算機可執行方法,其特徵在於,在所述備選執行模式中執行所述命令還在所述命令行包括一指示所述備選執行模式的開關時發生。7.如權利要求6所述的計算機可執行方法,其特徵在於,所述開關包括「whatif」,並且所述備選執行模式可視地顯示了執行所述命令的模擬結果。8.如權利要求1所述的計算機可執行方法,其特徵在於,所述指令包括對由所述操作環境提供的方法的調用。9.具有用於執行一種方法的計算機可執行指令的至少一個計算機可讀介質,所述方法包括接收用於指示任務的執行的命令行;判斷在所述命令行中是否存在與一模擬模式相關聯的參數;如果所述參數存在,則模擬所述任務的執行;以及報告所述模擬的結果。10.如權利要求9所述的計算機可讀介質,其特徵在於,所述參數包括開關。11.如權利要求10所述的計算機可讀介質,其特徵在於,所述開關包括「whatif」。12.如權利要求9所述的計算機可讀介質,其特徵在於,所述任務包括獨立可執行命令。13.如權利要求9所述的計算機可讀介質,其特徵在於,所述任務包括可執行命令的管道,每一可執行命令在一單獨的進程中操作。14.如權利要求9所述的計算機可讀介質,其特徵在於,所述任務包括可執行命令的管道,每一可執行命令在同一進程內操作。15.如權利要求14所述的計算機可讀介質,其特徵在於,每一可執行命令包括例示的類。16.一種提供命令行操作環境的系統,其特徵在於,所述系統包括一處理器;以及一存儲器,所述存儲器為多個計算機可執行指令而分配,所述多個計算機可執行指令被加載到所述存儲器中以供所述處理器執行,所述計算機可執行指令執行一種方法,包括執行在命令行上輸入的每一命令,其中,如果所述命令包括使用由所述操作環境提供的擴展功能執行所述命令的指令,則使用所述擴展功能執行所述命令。17.如權利要求16所述的系統,其特徵在於,所述擴展功能包括可視地顯示執行所述命令的結果。18.如權利要求16所述的系統,其特徵在於,所述擴展功能包括可視地顯示執行所述命令的模擬結果。19.如權利要求16所述的系統,其特徵在於,所述擴展功能包括在執行所述命令之前提示驗證。20.如權利要求16所述的系統,其特徵在於,所述擴展功能包括執行安全核查以判斷請求所述命令的執行的用戶是否具有足夠的特權來執行所述命令。全文摘要本發明的命令允許在命令行操作環境的命令行上輸入的命令能夠在第一執行模式或備選執行模式中執行。如果命令行包括在一備選執行模式中執行的指令,則該命令在備選執行模式中執行。備選執行模式由操作環境提供,並向命令提供了擴展功能。備選執行模式能可視地顯示執行命令的結果、可視地顯示執行命令的模擬結果、在執行命令前提示驗證、可執行安全核查來判斷請求執行的用戶是否具有足夠的特權來執行該命令等等。文檔編號G06F21/00GK101073057SQ200480001294公開日2007年11月14日申請日期2004年7月22日優先權日2003年10月24日發明者J·P·史諾弗爾,J·W·特魯荷三世申請人:微軟公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀