分享方式:


關於報告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 中,使用 CreateObjectMicrosoft.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 以使用從環境變數擷取的資訊來顯示進度指示器。 若要傳遞目前的百分比進度,請使用 參數 uActionExecStepuActionExecMaxStep 。 例如,如果您在 中 uActionExecStep 傳遞值 2,並在 中傳遞值 10 uActionExecMaxStep ,則動作完成百分比為 20%。

另請參閱

IProgressUI::ShowActionProgressProgressUI