PSTファイルの容量情報のレポーティング

クライアントが保持している特定のファイル形式の一覧と容量を調査したい…というニーズは結構あると思います。

ここではたとえば「ユーザーがローカルで保持しているPSTファイルの一覧と容量を調査する」という例でその実装方法を紹介したいと思います。

クライアント設定(ソフトウェアインベントリ)

まずクライアント設定を作成します。規定のクライアント設定を変更しても良いですが、別の設定を作成したほうが柔軟に対応できるかなと思います。

clip_image001

clip_image002

clip_image003

この例では*.pstファイルの情報を収集するように設定しています。

作成した設定を展開していきます。

clip_image004

clip_image005

ここではもちろん任意のコレクションを選択することが出来ます。

単に待っていると下手をすると1週間とか待たなくてはいけないので「コンピューター ポリシーの取得および評価サイクル」と「ソフトウェア インベントリ サイクル」を「直ちに実行」しておきます。

clip_image006

これでもしばらく待つことになりますが、クライアント側のC:\Windows\CCM\LogsInventoryAgent.logを見るとソフトウェアインベントリが行われている状況が確認できます。

Inventory: *********************** Start of message processing. ***********************        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Message type is InventoryAction        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Temp directory = C:\Windows\CCM\Inventory\Temp\        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Clearing old collected files.        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Opening store for action {00000000-0000-0000-0000-000000000002} …        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

InventoryVersionNumber for ‘{00000000-0000-0000-0000-000000000002}’ not found.        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

CInvState::VerifyInventoryVersionNumber: Couldn’t get version number for ‘{00000000-0000-0000-0000-000000000002}’: 80070490        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Delta report without a previous Full report; will do a Full report.        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Action=Software, ReportType=Full, MajorVersion=1, MinorVersion=0        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Initialization completed in 0.046 seconds        InventoryAgent        2015/07/08 12:25:06        10944 (0x2AC0)

Inventory: Message [Type=InventoryAction, ActionID={00000000-0000-0000-0000-000000000002}, Report=Delta] already in queue. Message ignored.        InventoryAgent        2015/07/08 12:34:38        11588 (0x2D44)

CThrottler::Throttle()[{C0ED66AD-8194-49FD-9826-D0DD38AB7DAA}] – soft timeout exceeded. Throttling is now disabled for the current iteration of this task.        InventoryAgent        2015/07/08 14:25:08        5980 (0x175C)

Collection: Input context, scan rate in milliseconds = 2        InventoryAgent        2015/07/08 14:25:08        5980 (0x175C)

Collection: Input context, skip file name = skpswi.dat        InventoryAgent        2015/07/08 14:25:08        5980 (0x175C)

Collection: Namespace = \\.\root\ccm\invagt; Query = SELECT Name, Path, LastWriteDate, Size, CompanyName, ProductName, ProductVersion, ProductLanguage, FileVersion, FileDescription FROM FileSystemFile WHERE Name = ‘*.pst’ AND Path = ‘*\\*’ AND SkipWindirFolders = TRUE AND IsCompressed = FALSE AND IsEncrypted = FALSE; Timeout = 14400 secs.        InventoryAgent        2015/07/08 14:25:08        5980 (0x175C)

Inventory: Collection Task completed in 7824.094 seconds        InventoryAgent        2015/07/08 14:35:31        13364 (0x3434)

Inventory: Temp report = C:\Windows\CCM\Inventory\Temp\148a9b9e-6ffc-4966-b228-bc89d47643a2.xml        InventoryAgent        2015/07/08 14:35:31        13364 (0x3434)

Collection: 1/1 inventory data items successfully inventoried.        InventoryAgent        2015/07/08 14:35:31        13364 (0x3434)

Inventory: Starting reporting task.        InventoryAgent        2015/07/08 14:35:31        14508 (0x38AC)

Reporting: 1 report entries created.        InventoryAgent        2015/07/08 14:35:31        14508 (0x38AC)

Inventory: Reporting Task completed in 0.031 seconds        InventoryAgent        2015/07/08 14:35:31        14508 (0x38AC)

Inventory: Successfully sent report. Destination:mp:MP_SinvEndpoint, ID: {79FE0043-18F1-4463-AB89-CF55DE7B8D14}, Timeout: 80640 minutes MsgMode: Signed, Not Encrypted        InventoryAgent        2015/07/08 14:35:31        14508 (0x38AC)

Inventory: Cycle completed in 7824.562 seconds        InventoryAgent        2015/07/08 14:35:31        14508 (0x38AC)

Inventory: Action completed.        InventoryAgent        2015/07/08 14:35:31        14508 (0x38AC)

Inventory: ************************ End of message processing. ************************        InventoryAgent        2015/07/08 14:35:31        14508 (0x38AC)

結果、ソフトウェアインベントリでファイルの情報を確認することができました。

clip_image007

clip_image008

削除してゴミ箱に入っているデータもレポートに含まれていますね。

レポートの利用

1台ずつリソースエクスプローラーで確認するのも大変なので、レポートで一括で確認してみます。

標準のレポートとしては以下のあたりがソフトウェアインベントリで収集したファイルを確認できるレポートです。

clip_image009

clip_image010

残念ながら、規定で用意されているサポートだと特定のコンピューターを指定する、特定のファイル名を指定する…ということをしないと情報が出力出来ず用途によってはちょっと不便ですね。

ここはカスタマイズしたレポートを作成する、あるいは直接SQL DBの中を覗く…という対応が良さそうです。

SCCMのDBスキーマ

SCCMのSQL DBのスキーマはきちんと公開されています。

直接テーブルを参照するのではなく、ビューを通して参照することはサポートされています。

今回はソフトウェアインベントリの結果を参照したいので、以下が該当します。

v_GS_SoftwareFile

Lists the files and associated product IDs on each Configuration Manager client.

The view can be joined to other views by using the ResourceID column.

このビューの中身を見てみます。

clip_image011

きちんと収集されている情報が見られますね。

既存のレポートの参照

コンピューター名の情報などは普通に欲しくなると思いますので、ResourceIDをキーにして紐付けばよい…のですが、自分で全部一から調べるよりも既存のレポートがどのように情報を生成しているのかを調べたほうが楽ですね。

clip_image012

clip_image013

clip_image014

Select SYS.Netbios_Name0, SYS.Resource_Domain_OR_Workgr0, SF.FileName, SF.FileDescription,

SF.FileVersion, SF.FileSize, SF.FileModifiedDate, SF.FilePath

from fn_rbac_GS_SoftwareFile(@UserSIDs) SF

join fn_rbac_R_System(@UserSIDs) SYS on SF.ResourceID = SYS.ResourceID

WHERE SYS.Netbios_Name0 Like @variable

Order by SF.FileName

レポートは権限にもとづいて必要なもののみが表示されるように実装されているので、@UserSIDsなどがつかわれていて若干難しいですね。詳細は以下が参考になります。

とりあえず、権限のコントロールは無視し、コンピューター名で絞らずに全部出すようにします。

Select SYS.Netbios_Name0, SYS.Resource_Domain_OR_Workgr0, SF.FileName, SF.FileDescription,

SF.FileVersion, SF.FileSize, SF.FileModifiedDate, SF.FilePath

from v_GS_SoftwareFile SF

join v_R_System SYS on SF.ResourceID = SYS.ResourceID

Order by SF.FileName

clip_image015

これで必要な情報は取得出来ていますので、Excelで見られるようにしてみましょう。

Excelでの接続と表示

まずSQL Serverに接続します。

clip_image016

clip_image017

clip_image018

clip_image019

clip_image020

あとでSQLクエリを書くので、適当にOK。

clip_image021

プロパティを開きます。

clip_image022

コマンドの種類をSQLにし、コマンド文字列にクエリを入力します。

clip_image023

これで、Excelで必要な情報が見られるようになりました。

あとは、Excelですからピポッドテーブルで見たり、ちょっとしたレポートの用に書式を整えたりなど、自由に行えますね。

clip_image024

clip_image025

Excelであればエンドユーザーでもかなり自由に操作できると思うので、データの表示にはExcelを使ってしまうのがいいのではないかというのが私の見解です。

レポートの作成

とはいえ、せっかくですからSCCMコンソールから表示できるレポートも作っておきましょう。

全コンピューターを対象にPSTファイルをサイズの大きい順に出すレポートを作ってみたいと思います。

まず、使える既存レポートを開いた上で、別名で保存します。

clip_image026

clip_image027

clip_image028

クエリを書き換えます。

clip_image029

コンピューター名は必要なくなるので、パラメーターから削除します。

clip_image030

タイトルは今回はベタで書きます。

clip_image031

プレビューするときちんと意図した結果になっているかどうか確認できます。

clip_image032

保存します。

clip_image033

clip_image034

clip_image035

説明を書き換えました。

SCCMコンソールにも表示されてきます。

clip_image036

clip_image037

きちんとカスタマイズされたレポートが表示されました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です