第28章. CIMとWindows管理インストルメンテーション
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
28.0 はじめに
Windows Management Instrumentation (WMI) は、長い間Windowsの中心的な管理機能であった。WMIは驚くべき幅の広さ、広い範囲、そしてユビキタスなリモーティングを提供する。
しかし、 WMIに欠けていたのは、WMIにアクセスする良い方法だった。グラフィカルなwbemtest.exeユーティリティを使えば、WMIやその名前空間、クラスを試すことができる。しかし、その複雑なUIにより、ほとんどのシナリオで使用するのは非現実的であるため、これは本当にテストツールである(図28-1を参照)。
よりユーザフレンドリな代替手段は、wmic.exeコマンドラインツールである。WMICツールは、インタラクティブにWMIをクエリできるが、より重要なのは、その振る舞いを自動化することだ。PowerShellと同様に、WMICの結果は構造化された情報を多く保持しており、かなり詳細なクエリを書くことができる:
PS > WMIC logicaldisk WHERE drivetype=3 `
GET "name,freespace,SystemName,FileSystem,Size"
FileSystem FreeSpace Name Size SystemName
NTFS 10587656192 C: 34357637120 LEEHOLMES1C23
しかし、この言語には制限があり、WMICが出力をテキストに変換すると、データの構造はすべて失われてしまう。
WMIのUIとして最も人気があるのは、管理者の伝統的なスクリプト言語であるVBScriptである。VBScriptは、WMICよりもはるかに豊富な言語構造を提供し、スクリプトの全期間にわたってWMIの構造化データを保持する。
図28-1. wbemtest.exeを使ってWin32_Processを取得する。
しかし、VBScriptには独自のユーザビリティ上の難点がある。例えば、コンピューター上で実行されているプロセスのレポートを作成する場合、次のようになることが多い:
strComputer = "atl-dc-01" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process") For Each objProcess in colProcessList Wscript.Echo "Process: " & objProcess.Name Wscript.Echo "Process ID: " & objProcess.ProcessID Wscript.Echo "Thread Count: " & objProcess.ThreadCount ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access