關於報告Configuration Manager自訂動作進度
當自訂動作在Configuration Manager用戶端上執行時,它可以報告用來顯示進度指示器的進度資訊。
您可以使用 COM 自動化介面 IProgressUI::ShowActionProgress,將進度資訊報告至工作順序環境,並顯示進度指示器。
IProgressUI::ShowActionProgress
會在 COM 類別 ProgressUI中實作,這是TSProgressUI.exe中的跨進程 COM 物件。
工作順序環境中的 ProgressUI
在工作循序執行之前, ProgressUI
會先註冊,然後在工作順序完成時取消註冊。 在來源作業系統中, ProgressUI
會在登入的使用者認證下執行。 如果工作循序執行時沒有使用者登入,COM 物件的註冊就會失敗。 在目標作業系統和 Windows PE 中, ProgressUI
在系統帳戶下執行。
呼叫 IProgressUI::ShowActionProgress
在您的自訂動作中,您必須執行下列動作來報告自訂動作的進度,並顯示進度指示器。
注意事項
一般而言,如果動作需要一分鐘以上的時間來執行,您應該報告進度資訊。
判斷是否應顯示進度指示器
使用下列邏輯,您可以使用環境變數來判斷是否應顯示進度指標。
如果您是在 WindowsPE 中執行, ( _SMSTSInWinPE
== 「true」) ,或
如果您是在完整作業系統中執行,請在安裝後 (_SMSTSReturnToGINA
==「true」) ,或
如果工作順序是從媒體啟動, (_SMSTSLaunchMode
為 「CD」、「DVD」 或 「USB」) 或
如果工作順序是在獨立模式中執行, (_SMSTSStandAloneMode
==「true」) ,或
如果將顯示進度 UI 旗標設定 (_SMSTSShowProgressUI
== 「true」) ,則應該顯示進度指標,否則不應該顯示。
建立 COM ProgressUI 物件
您可以使用與任何 COM 物件一起使用的相同技術來建立 ProgressUI
物件。 在 C++ 中,您會使用 CoCreateInstance
。 在 C# 中,您會新增 SMS TSE Progress UI 的參考,並在原始程式碼中建立 類別的 ProgressUILib.ProgressUIClass
實例。
在 VBScript 中,使用 CreateObject
Microsoft.SMS 呼叫 。TsProgressUI。
如需在 VBSript 和 C# 中建立 COM 物件的範例,請參閱How to Use Task Sequence Variables in a Running Configuration Manager Task Sequence。
取得必要的環境變數
數個環境變數包含您必須傳遞給 IProgressUI::ShowActionProgress
方法的資訊。 例如,參數所需的 pszOrgName
組織名稱可從環境變數 取得。 _SMSTSOrgName
如需詳細資訊,請參閱 IProgressUI::ShowActionProgress。 如需讀取工作順序環境變數的相關資訊,請參閱How to Use Task Sequence Variables in a Running Configuration Manager Task Sequence。
呼叫 IProgressUI::ShowActionProgress
呼叫 IProgressUI::ShowActionProgress
以使用從環境變數擷取的資訊來顯示進度指示器。 若要傳遞目前的百分比進度,請使用 參數 uActionExecStep
和 uActionExecMaxStep
。 例如,如果您在 中 uActionExecStep
傳遞值 2,並在 中傳遞值 10 uActionExecMaxStep
,則動作完成百分比為 20%。