次の方法で共有


カスタム アクションの進行状況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.TsProgressUICreateObjectを呼び出します。

VBSript と C# で COM オブジェクトを作成する例については、「実行中のConfiguration Managerタスク シーケンスでタスク シーケンス変数を使用する方法」を参照してください。

必要な環境変数の取得

いくつかの環境変数には、 IProgressUI::ShowActionProgress メソッドに渡す必要がある情報が含まれています。 たとえば、pszOrgName パラメーターに必要なorganization名は、環境変数_SMSTSOrgNameから使用できます。 詳細については、「 IProgressUI::ShowActionProgresss」を参照してください。 タスク シーケンス環境変数の読み取りについては、「実行中のConfiguration Managerタスク シーケンスでタスク シーケンス変数を使用する方法」を参照してください。

IProgressUI::ShowActionProgress の呼び出し

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

関連項目

IProgressUI::ShowActionProgressProgressUI