今回はSCCMでクライアント展開を行っている際になかなか展開が進まないクライアントが存在する場合の切り分け方法について私が理解している範囲でまとめておきます。まだドメイン内のクライアントに関する事項しかかけていませんが、ワークグループ(ドメイン外)のクライアントに関しての処理の流れもある程度わかっているので、時間が有る時に(時間が中々取れないのですが)追記したいなと思います。「すぐ追記しろ!」という方はコメントいただけるとモチベーションUpします。

 

SCCMクライアント展開の流れ

基本的にはSCCMクライアントの展開は以下の様な流れで行われます。

- SCCMサーバーがActive Directoryから端末情報を取得する(これによってSCCMコンソールにデバイスが「クライアント いいえ」で表示される)
- 表示されているデバイスに対して管理者がSCCMクライアントのPush Installを実行する
- SCCMサーバーから管理共有を用いてインストールファイルが対象クライアントにコピーされた上で、インストーラーがキックされる
- クライアント上でインストールが完了する
- クライアントからSCCMサーバーに通信が行われる
- SCCMサーバー上でクライアントが正常に完了し、通信が行われたことが表示される

それぞれのステップでの確認ポイントをまとめてみたいと思います。

 

1. SCCMサーバーがActive Directoryから端末情報を取得する

動作概要

- SCCMサーバーがADにアクセス
- 情報読み取り
- 読み取った情報をSQLDBに書き込む

ポイント

- ADへのアクセスが発生するのできちんと読み取るための権限が設定してある必要があります

確認箇所

- \管理\概要\階層の構成\探索方法\Active Directoryシステムの探索

設定が有効になっていること
- 適切なActive Directoryコンテナーが対象として設定されていること
- ポーリングステータスが意図したものになっていること

- Active Directoryユーザーとコンピューター

探索対象のコンテナ

「表示」→「拡張機能」を有効化した上で、セキュリティタブを確認し、SCCMサーバーに対して読み取り権限が設定されていること

- SCCMサーバーログ

adsysdis.log

問題がある場合にはSCCMサーバー上のこのログをみて問題の詳細を確認する。

 

2. 表示されているデバイスに対して管理者がSCCMクライアントのPush Installを実行する

動作概要

- SCCMサーバー上でPush Installをするための登録がなされる。

ポイント

- きちんと目的のクライアントに対してPush Installの要求が作成されることが必要。

確認箇所

- C:\Program Files\Microsoft Configuration Manager\inboxes\ccr.box

ここにPush Installの要求がファイルとして生成される。
- 1クライアントにつき1ファイル生成される。
- 失敗すると「C:\Program Files\Microsoft Configuration Manager\inboxes\ccrretry.box」に移動され1時間後にまたccr.boxに移動される。

 

3. SCCMサーバーから管理共有を用いてインストールファイルが対象クライアントにコピーされた上で、インストーラーがキックされる

動作概要

- 予め設定されていたPush Install用のアカウントでアクセスする
- 管理共有として以下2つにアクセスする

[\\client\IPC$](//\\client\IPC$)
- [\\client\admin$](//\\client\admin$)

- [\\client\admin$\ccmsetup](//\\client\admin$\ccmsetup) に対してインストーラーを配置する
- インストーラーであるccmsetupが起動される(サービスを作成してそれで起動している?要確認。)

ポイント

- 対象のクライアントがきちんと起動していて名前解決含めてネットワーク的にアクセスできる必要がある。
- Push Install用のアカウントがきちんと対象のクライアントに対して管理者権限を持っている必要がある。
- クライアント側でファイアウォール等でブロックしてしまわないようにする必要がある。
- クライアント側にインストーラーを配置できるだけの空き容量が確保されている必要がある。

確認箇所

- \監視\概要\レポート\レポート\クライアント プッシュ\クライアントプッシュインストールのステータスの詳細

ここで「完了」になっていれば(SCCMサーバーから見て)処理は完了している。
- エラーの場合にはエラーコードの意味を以下で確認する。

[SCCMのクライアントインストールエラーコードの一覧 | System Center Blog](https://systemcenter.ebisuda.net/2013/12/09/sccm%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%B8%80/)

- SCCMサーバーログ

ccm.log(通常はC:\Program Files\Microsoft Configuration Manager\Logs\ccm.log)

SCCMサーバー上のccm.logに詳細なログが出る。問題がある場合にはこのログで詳細に確認することができる。

 

4. クライアント上でインストールが完了する

動作概要

- サーバーによりセットアップファイルが配置され、それがキックされたので、その後のインストールプロセスがクライアント上で走る

ポイント

- セットアップが正常に完了するための前提条件が整っている必要がある。

[Prerequisites for Windows Client Deployment in Configuration Manager](http://technet.microsoft.com/en-us/library/gg682042.aspx)
- 特に、XP, 2003 Serverに対して、BITS 2.5のインストールやSPの適用を事前にしておく必要があります。

確認箇所

- C:\Windows\ccmsetup\Logs\ccmsetup.log

クライアント側でインストールログファイルを確認することで詳細の確認が可能。
- 最終的に「CcmSetup is exiting with return code 0」と、正常終了している必要がある。

- タスクマネージャー

ccmexec.exeがSCCMのクライアントのプロセスなので、これが常駐していること。
- インストール中にはccmsetup.exeがプロセスとして確認できる。

 

5. クライアントからSCCMサーバーに通信が行われる

動作概要

- SCCMクライアントが動作し、SCCMサーバーと通信しながら正常動作する

ポイント

- 動作は色々と複雑で、処理すべきことも多数あるため、サーバー側までの情報の伝達にはそれなりに時間がかかる。
- 時間を短縮したい場合には、コントロールパネル内の「Configuration Manager」にて各種操作を「直ちに実行」する。(※どの段階でどの処理か…の判断は結構難しいので、全部実行してしまうのがお勧め。)

image

確認箇所

- クライアント側の動作ログ

"C:\Windows\CCM\Logs\CcmExec.log"

これがクライアント側の動作ログの大元。他にも多数のログがある。
- まず、CcmExecにて処理が実行キックされ、それぞれの他のログ(スレッド)にて実際の動作が行われるイメージ。

- "C:\Windows\CCM\Logs\CcmNotificationAgent.log"

サーバーとの通信の状況

 

6. SCCMサーバー上でクライアントが正常に完了し、通信が行われたことが表示される

動作概要

- SCCMクライアントからの報告をSCCMサーバーが受ける
- SQL DBに情報が書き込まれる
- SCCMコンソール上で情報が確認できる

ポイント

- 動作は色々と複雑で、処理すべきことも多数あるため、コンソール上に表示されるまでにはしばらく時間がかかる。

確認箇所

- 要確認