カスタム アクションの進行状況Configuration Managerレポートについて
カスタム アクションは、Configuration Manager クライアントで実行されている間、進行状況インジケーターを表示するために使用される進行状況情報を報告できます。
COM オートメーション インターフェイス IProgressUI::ShowActionProgress を使用して、進行状況情報をタスク シーケンス環境に報告し、進行状況インジケーターを表示します。
IProgressUI::ShowActionProgress
は、TSProgressUI.exe のプロセス外の COM オブジェクトである COM クラス ProgressUI で実装されます。
タスク シーケンス環境の ProgressUI
タスク シーケンスが実行される前に、 ProgressUI
が登録され、タスク シーケンスが完了すると登録解除されます。 ソース オペレーティング システムでは、 ProgressUI
はログオンしたユーザー資格情報で実行されます。 タスク シーケンスの実行時にユーザーがログインしていない場合、COM オブジェクトの登録は失敗します。 ターゲット オペレーティング システムと Windows PE では、 ProgressUI
システム アカウントで実行されます。
IProgressUI::ShowActionProgress の呼び出し
カスタム アクションでは、カスタム アクションの進行状況を報告し、進行状況インジケーターを表示するには、次の操作を行う必要があります。
注:
通常、アクションの実行に 1 分以上かかる場合は、進行状況情報を報告する必要があります。
進行状況インジケーターを表示するかどうかを決定する
次のロジックを使用して、環境変数を使用して、進行状況インジケーターを表示するかどうかを判断できます。
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 で、Microsoft.SMS.TsProgressUI でCreateObject
を呼び出します。
VBSript と C# で COM オブジェクトを作成する例については、「実行中のConfiguration Managerタスク シーケンスでタスク シーケンス変数を使用する方法」を参照してください。
必要な環境変数の取得
いくつかの環境変数には、 IProgressUI::ShowActionProgress
メソッドに渡す必要がある情報が含まれています。 たとえば、pszOrgName
パラメーターに必要なorganization名は、環境変数_SMSTSOrgName
から使用できます。 詳細については、「 IProgressUI::ShowActionProgresss」を参照してください。 タスク シーケンス環境変数の読み取りについては、「実行中のConfiguration Managerタスク シーケンスでタスク シーケンス変数を使用する方法」を参照してください。
IProgressUI::ShowActionProgress の呼び出し
環境変数から取得された情報を使用して進行状況インジケーターを表示するには、 IProgressUI::ShowActionProgress
を呼び出します。 現在の進行状況を渡すには、パラメーター uActionExecStep
と uActionExecMaxStep
を使用します。 たとえば、 uActionExecStep
で値 2 を渡し、 uActionExecMaxStep
で値 10 を渡した場合、アクションの完了率は 20% です。