ソフトウェア更新プログラムで複数の再起動が必要な場合、タスク シーケンスがConfiguration Managerで失敗する

この記事では、Configuration Manager タスク シーケンスを使用するときにタスク シーケンス環境で見つからないエラーが発生する問題を解決するための情報を提供します。

元の製品バージョン:Microsoft System Center 2012 Configuration Manager、Microsoft System Center 2012 R2 Configuration Manager、Configuration Manager (現在のブランチ)
元の KB 番号: 2894518

概要

この問題は、System Center 2012 Configuration Manager Service Pack 2 および System Center 2012 R2 Configuration Manager Service Pack 1 の累積的な更新プログラム 3 と、現在のブランチ バージョン 1602 Configuration Managerで修正されています。

ソフトウェア更新プログラムのインストールで 2 回の再起動が必要な場合に、クライアントの動作をより適切に制御するために、 SMSTSWaitForSecondReboot新しいオプションのタスク シーケンス変数 を使用できます。

詳細については、「Configuration Managerの累積的な更新プログラム 3 の説明」の「ソフトウェア更新プログラムの管理/オペレーティング システムの展開」セクションを参照してください。

現在のブランチConfiguration Managerについては、「タスク シーケンス変数」を参照してください。

現象

[ソフトウェアのインストール] 更新 ステップを使用するConfiguration Manager タスク シーケンスでは、タスク シーケンスでソフトウェア 更新のインストール タスクが正常に実行された後に複数の再起動をトリガーするソフトウェア更新プログラムがインストールされるとします。 この状況では、タスク シーケンスが失敗し、次のエラー メッセージが生成される可能性があります。

タスク シーケンス環境が見つかりません

注:

Configuration Managerでこの問題を回避するには、[ソフトウェア更新のインストール] タスク シーケンス ステップの新しい [再試行] オプションを使用します。

原因

ソフトウェア更新プログラムによって開始される最初の再起動は、タスク シーケンスによって制御されます。 ただし、2 つ目の再起動要求は Windows コンポーネント (通常は Component-Based サービス) によって開始され、タスク シーケンスによって制御されません。 そのため、2 回目の再起動はタスク シーケンスによって制御されないため、タスク シーケンスの実行状態は再起動前に保存されません。 2 回目の再起動後にタスク シーケンスが再開されると、正常に続行できる状態はありません。

解決方法

この問題を解決するには、タスク シーケンスを使用するのではなく、Configuration Managerの通常のソフトウェア更新機能を使用して、デュアル再起動を必要とする更新プログラムを適用することをお勧めします。 次のソフトウェア更新プログラムは、複数回の再起動が必要と報告されました。

詳細

この 2 回目の再起動はタスク シーケンスによって制御されないため、再起動前に実行状態は保存されません。 再起動後にタスク シーケンスが再開されると、正常に続行できる状態はありません。 さらに、この問題が発生すると、次のメッセージがSmsts.log ファイルに記録される場合があります。

!sVolumeID.empty(), HRESULT=80004005
!sTSMDataPath.empty(), HRESULT=80070002
TS::Utility::GetTSMDataPath( sDataDir ), HRESULT=80070002
ログ ディレクトリの設定に失敗しました。 一部の実行履歴が失われる可能性があります。
指定されたファイルが見つかりません。 (エラー: 80070002。ソース: Windows)
タスク シーケンスの実行
!sVolumeID.empty(), HRESULT=80004005
!sTSMDataPath.empty(), HRESULT=80070002
タスク シーケンス環境が見つかりません

また、Microsoft System Center 2012 Configuration Manager Service Pack 1 より前のリリース バージョンを実行しているクライアントには、次のログ エントリが含まれている場合があります。

Windows PE で完了したタスク シーケンス。

タスク シーケンスが失敗した後、クライアント コンピューターがプロビジョニング モードでスタックする可能性もあります。 コンピューターがプロビジョニング モードであるかどうかを判断するには、レジストリ サブキーをHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM\CcmExecチェックします。

ProvisioningModeは false に設定する必要があります。 true に設定されている場合は、次のいずれかの方法を使用して、クライアントをプロビジョニング モードから外します。

  • Windows 管理インストルメンテーション (WMI) メソッド SetClientProvisioningMode を使用して、クライアントをプロビジョニング モードから正しく解除します。 これを行う最も簡単な方法は、次のWindows PowerShell コマンドを実行することです。

    Invoke-WmiMethod -Namespace root\CCM -Class SMS_Client -Name SetClientProvisioningMode -ArgumentList $false
    

    または、管理者特権のコマンド プロンプトで次のコマンドを実行します。

    powershell Invoke-WmiMethod -Namespace root\CCM -Class SMS_Client -Name SetClientProvisioningMode -ArgumentList $false
    
  • クライアントを再インストールします。

重要

ProvisioningMode 値を false に変更して、クライアントを修正しないでください。 このアクションによって、クライアントがプロビジョニング モードから完全に解除されることはありません。