[SCCM 2012] 資産管理台帳のカスタム レポートを作成する

(2014/8/27 更新 - 参考情報を追加しました。)

こんにちは、System Center サポート部の石井です。

今回は、System Center 2012 Configuration Manager (以下、Configuration Manager) でカスタム レポートを作成する手順をご案内します。

例として、"資産管理台帳" ということでパソコンの所持ユーザーに紐づくマシン名と、管理者の部署名も表示するというものを作成します。
Configuration Manager の情報が格納されている SQL Server データベースの基礎知識などもカバーしますので、これから Configuration Manager で様々な情報を管理されたいという方は是非ともご参考ください。

サンプルだとマシン数も少なく、機種名が仮想環境のため見栄えがしませんが、以下のようなレポートを作成します。

 

 

A. AD ユーザーの探索において、追加収集する属性を設定する
------------------------------------------------------------

資産管理台帳を表示するにあたって、管理者の日本語でのフルネームや部署名といった情報も取得したいという要件があります。
これを実現するには、AD ユーザー探索において収集する属性を追加します。

1. Configuration Manager コンソールを開きます。

2. コンソール画面左のツリー表示より、[階層の構成] - [探索方法] を選択します。

3. 画面右の、探索方法の一覧より、"Active Directory ユーザーの探索" をダブルクリックし、プロパティ画面を開きます。

4. "Active Directory の属性" タブを表示します。

5. ウィンドウ左下の、"利用可能な属性" は、AD 上のユーザー オブジェクトの属性を示します。

例えば、部署名は "department"、会社名は "company"、ユーザーの表示名は "displayname" となります。

 

このように、AD 上の属性表記との関連性については、以下のドキュメントにおいても記載されていますので併せてご参考ください。

ご参考: 他の GAL 関連のユーザー属性、グループ属性、および連絡先属性
https://technet.microsoft.com/ja-jp/library/aa997520(v=exchg.65).aspx

cn, department, company, title, displayName を例として追加しますが、任意でその他の属性を追加いただいても結構です。

 

※ 補足: ここで追加した属性は、後述の、Configuration Manager の SQL のビュー "v_R_User" に、当該の名称で属性が追加されます。

 

6. 追加した属性は、次回の "Active Directory ユーザーの探索" の周期にて、収集されて Configuration Manager のデータベースに格納されます。
直ちに実行したい場合、手順 3 の "Active Direcotry ユーザーの探索" を右クリックし、"今すぐ完全な探索を実行する" を選択します。

上記は、"AD ユーザーの探索" の例ですが、その他、AD システムの探索 (コンピューター オブジェクト) でも、AD 属性の追加が可能ですので、応用してください。
B. SQL のクエリを作成する
------------------------------------------------------------
Configuration Manager にて格納された情報についてクエリし、必要な情報をまとめて表示します。
レポートの元となる SQL クエリについては、[SQL Server Management Studio] から試行錯誤し、作成します。

1. Configuration Manager サイト システムの SQL Server の役割を持つサーバーにログインし、[SQL Server Management Studio] を開きます。

2. [SQL Server Management Studio] のログイン画面から、接続を行います。

3. [SQL Server Management Studio] の画面左のツリーより、[データベース] - [CM_<サイトコード>] を右クリックし、[新しいクエリ] を選択します。

4. 白紙のクエリ ウィンドウにクエリを記載し、F5 キーを押すことで、クエリが実行出来ます。

クエリの作成にあたっては、後述補足の、"SCCM データベースのクエリ作成の基礎知識" をご参考ください。

以下は、ユーザー名に紐尽くプライマリ デバイスと、その基本的な情報を表示する資産台帳の表示を行うカスタム クエリです。
Configuration Manager 2012 の新機能となる、ユーザーが最も長く使用するプライマリ デバイスを使用しています。
ユーザー名と、そのプライマリ デバイスの関連性は v_UserMachineRelationship ビューに格納されています。

クエリ例:
-----------------
SELECT sys.Netbios_Name0 as "マシン名", u.Unique_User_Name0 as "AD上のユーザー名",
u.displayname0 as "ユーザー名", u.department0 as "部署名",
cs.Model0 as "機種のモデル名", cs.Manufacturer0 as "機種の製造元",
left (os.Name0,charindex ('|', os.Name0)-1) as "OS名", os.TotalVisibleMemorySize0 as "物理メモリ(MB)",
(ld.Size0 / 1024) as "C:の容量(GB)"

FROM
v_UserMachineRelationship umr
INNER JOIN v_R_User u
on umr.UniqueUserName = u.Unique_User_Name0
INNER JOIN v_R_System sys
on umr.MachineResourceID = sys.ResourceID
inner join v_GS_COMPUTER_SYSTEM cs
on sys.ResourceID = cs.ResourceID
inner join v_GS_OPERATING_SYSTEM os
on os.ResourceID = sys.ResourceID
inner join v_GS_LOGICAL_DISK ld
on ld.ResourceID = sys.ResourceID
where ld.DeviceID0 like '%C%'
-----------------

C. レポートを作成する
------------------------------------------------------------

B で作成した SQL クエリを表示する、簡単なカスタム レポートの作成手順です。

1. Configuration Manager コンソールより、[監視] ワークスペースを開きます。

2. [レポート] - [レポート] から、"レポートの作成" をクリックします。

3. "レポートの作成ウィザード" では、"SQL ベースのレポート" を選択の上、レポートの名前と説明を入力します。パスは、レポートがどのフォルダーに格納されるかが設定されますが、任意で結構です。

4. ウィザードを完了させると、SQL Server レポート ビルダーが起動します。

5. 画面中央の、"テーブルまたはマトリックス" を選択します。

 

6. "新しいテーブル/マトリックス" ウィザードが表示されます。"データセットを作成する" のチェックのまま、次へ進みます。

7. "データソース接続" については、既定のまま、次へ進みます。

8. "クエリのデザイン" 画面では、画面左上の "テキストとして編集" をクリックし、白紙個所に B で作成したクエリを張り付けます。
実行を押すことで、プレビューも可能です。

 

9. "フィールドの配置" 画面では、"使用できるフィールド" のすべてを、"値" にドラッグ ドロップします。

10. "レイアウトの選択" 画面で、次へ進み、ウィザードを完了します。

11. レポート ビルダーの最初の画面に戻ります。期待通り、クエリーがレポート表示されているか確認し、保存して閉じます。

12. Configuration Manager コンソールの [監視] ワークスペース、[レポート] - [レポート] から、作成したレポートを検索して、実行します。

 

このように、SQL Server に直接クエリするのではなく、SCCM のレポートから閲覧可能となります。
レポートごとにアクセス権を設定できる点や、XLS 形式などにエクスポートが可能であることがメリットです。

 

補足: Configuration Manager データベースのクエリ作成の基礎知識
-----------------------------------------------------------------

カスタム クエリを作成いただくにあたって、知っておきたい Configuration Manager データベースの基礎知識は以下となります。

1. はじめに、既存のレポートを色々と触ってみることをお奨めします。既存のレポートは様々な「よくある要望」を達成するため、用意されています。

2. カスタムすると決断した場合、手始めに、Configuration Manager 2012 の既存のレポートから、目的に類似したものをまずは見つけることをお奨めします。既存のレポートを [右クリック] - [編集] し、レポート ビルダーから見ることで、どのようなクエリを発行しているのか確認できます。
以下の画面ショットのように、"データセット" - "DataSet*" のプロパティを表示し、クエリを確認します。
特に、"from" 句で、どのビューを参照・結合しているのかが分かれば、SQL データベースとにらめっこをしなくても、即座に見るべきビューのあたりをつけることができます。

 

3. SQL クエリを書く場合、Configuration Manager では、テーブルではなく、ビューを使用してクエリを作成してください。(テーブルの直接参照はサポートされません。)

4. "Active Directory ユーザーの探索" で探索したユーザー属性は、"v_R_User" ビューに格納されます。また、コンピューター オブジェクトの場合、"v_R_System" になります。

5. Configuration Manager で収集されたハードウェア インベントリ情報の多くは、"v_GS_<カテゴリー名>" のビューに格納されています。
これらのビューを結合するにあたっては、マシンごとに一意に振られている ResourceID というキー値を使用することが有効です。
"ResourceID" が一致するよう、これらのビューを Join することで、特定のマシンについての様々なインベントリ情報を結合出来ます。

インベントリにて、どのような情報が収集されているかについては、[リソース エクスプローラー] からご確認をいただくことをお奨めします。
Configuration Manager コンソールの [資産とコンプライアンス] ワークスペースより、コレクションからマシン名を選択し、[開始] - [リソース エクスプローラー] を開始します。
画面左のツリーから一覧可能なカテゴリーは、すべて v_GS_<カテゴリー名> のビューに格納されています。

以下が、リソース エクスプローラーとビューとの関連性の一例です。

Creating Custom Reports By Using Configuration Manager 2007 SQL Views
https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=22052

Configuration Manager 2007 の情報ではありますが、以下をダウンロードすることで、全ビューに何が格納されているかが記載された Excel シートを閲覧可能です。
Configuration Manager 2012 でも、基本的なビュー情報は Configuration Manager 2007 と大きく変化しているわけではありませんので、こちらをご参考いただくことも有効です。

~ 参考情報 ~

Configuration Manager 2012 のビュー情報も公開されております。

Creating Custom Reports by Using SQL Server Views in System Center 2012 Configuration Manager
https://technet.microsoft.com/en-us/library/dn581954.aspx

評価ガイド「インベントリ収集編」にもカスタム レポートの作成方法をご紹介しております。本 blog 記事と合わせてご参考ください。

System Center 2012 R2 Configuration Manager 評価ガイド – インベントリ収集編
- 9.2 レポートの新規作成
https://www.microsoft.com/ja-jp/download/details.aspx?id=43694