Configuration Manager カスタム アクションの進捗状況の報告について

Configuration Manager クライアントでカスタム アクションが実行されている間、進行状況インジケーターを表示するために使用される進行状況情報を報告できます。

進捗状況情報をタスク シーケンス環境に報告したり、進捗状況インジケーターを表示するには、COM 自動化インターフェイス IProgressUI::ShowActionProgress を使用します。

IProgressUI::ShowActionProgress は、TSProgressUI.exe のアウトプロセス COM オブジェクトである COM クラス ProgressUI に実装されています。

タスク シーケンス環境の ProgressUI

タスク シーケンスが実行される前に ProgressUI が登録され、タスク シーケンスが完了すると登録解除されます。 ソース オペレーティング システムでは、ログオンしているユーザーの資格情報を使用して ProgressUI を実行します。 タスク シーケンスの実行時にログインしているユーザーがいない場合は、COM オブジェクトの登録は失敗します。 ターゲット オペレーティング システムおよび Windows PE では、 ProgressUI は system アカウントで実行されます。

IProgressUI::ShowActionProgress の呼び出し

カスタム アクションでは、次の操作を行ってカスタム アクションの進行状況を報告し、進行状況インジケーターを表示する必要があります。

注:

通常、アクションの実行に 1 分を超える時間がかかった場合は、進行状況の情報を報告する必要があります。

進行状況インジケーターを表示するかどうかの決定

次のロジックを使用すると、環境変数を使用して進行状況インジケーターを表示するかどうかを決定できます。

Windows PE ( _SMSTSInWinPE == "true") で実行している場合、または

インストール後の完全なオペレーティング システムを実行している場合 (_SMSTSReturnToGINA=="true")、または

タスク シーケンスがメディア (_SMSTSLaunchMode が「CD」、「DVD」または「USB」) から開始される場合、または

タスク シーケンスがスタンドアロン モード (_SMSTSStandAloneMode=="true") で実行されている場合、または

進行状況 UI を表示するフラグが設定されている (_SMSTSShowProgressUI == "true") 場合は、進行状況インジケーターが表示されます。それ以外の場合は表示されません。

COM ProgressUI オブジェクトの作成

ProgressUI オブジェクトを作成するには、他の COM オブジェクトと同じ方法を使用します。 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::ShowActionProgress」を参照してください。 タスク シーケンス環境変数の読み取りの詳細については、「実行中の Configuration Manager タスク シーケンスでタスク シーケンス変数を使用する方法」を参照してください。

IProgressUI::ShowActionProgress の呼び出し

IProgressUI::ShowActionProgress を呼び出して、環境変数から取得した情報を使用して進行状況インジケーターを表示します。 現在の進行状況の割合を渡すには、パラメーター uActionExecStepuActionExecMaxStep を使用します。 たとえば、 uActionExecStep で値 2 を渡し、 uActionExecMaxStepで値 10 を渡した場合、アクションの完了率は 20% になります。

関連項目

IProgressUI::ShowActionProgressProgressUI