知識マップ: WMI/CIMをC#・PowerShellから使う ── ハードウェア情報取得・プロセス監視・リモート照会の実務ガイド
記事「WMI/CIMをC#・PowerShellから使う ── ハードウェア情報取得・プロセス監視・リモート照会の実務ガイド」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
CIMはDMTFが策定する管理情報の業界標準で、WMIはWBEMのMicrosoft実装としてその標準に沿って管理対象を表現します。照会は名前空間(日常はroot/CIMV2)の中のクラスをWQLで絞り込む形が基本で、クラスの実体はプロバイダーがその場で作ります。PowerShellの現行はCIMコマンドレットで、旧WMIコマンドレットはPowerShell 6以降で削除済みです。リモート照会はWSManが既定で、同じ相手に複数回照会するならCIMセッションを使い回し、WinRMを構成できない相手にはDCOMプロトコルオプションを選びます。C#はSystem.ManagementとMI APIの2系統で、後者はCIMコマンドレットと同じ型体系を持ちます。落とし穴は、絞り込まない照会と短周期ポーリングによる負荷、イベント購読が管理者権限を要すること、32bitアプリには32bitプロバイダーが応答するためレジストリの見え方が変わること、そしてリポジトリの削除を最初の対処にしてはいけないことです。
flowchart LR
accTitle: WMI/CIMの構造と実務利用の知識マップ
accDescr: CIM標準とその実装であるWMIの関係、名前空間・クラス・プロバイダー・WQLという構造、CIMコマンドレットと旧WMIコマンドレットの世代交代、WSMan既定のリモート照会とDCOMオプション、C#の2系統のAPI、性能・権限・ビット数・リポジトリの落とし穴を示す図
wmi["WMI(Windows Management Instrumentation)"]
cim_standard["CIM(Common Information Model)"]
wmi_namespace["WMI名前空間"]
wql["WQL"]
wmi_provider["WMIプロバイダー"]
cim_cmdlets["CIMコマンドレット"]
wmi_v1_cmdlets["旧WMIコマンドレット(WMI v1)"]
powershell["PowerShell"]
cim_session["CIMセッション"]
winrm["WinRM(Windows Remote Management)"]
dcom_protocol_option["DCOMプロトコルオプション"]
dcom_protocol["DCOMプロトコル"]
kerberos["Kerberos"]
trustedhosts["TrustedHosts"]
workgroup["ワークグループ構成"]
system_management_namespace["System.Management(ManagementObjectSearcher)"]
mi_api["MI API(Microsoft.Management.Infrastructure)"]
wmi_event_subscription["WMIイベント購読"]
win32_processstarttrace["Win32_ProcessStartTrace"]
admin_rights["管理者権限"]
wmi_polling["WMIの短周期ポーリング"]
unscoped_wmi_query["絞り込まないWMI照会(SELECT *)"]
continuous_performance_monitoring["連続的なパフォーマンス監視"]
stdregprov["レジストリプロバイダー(StdRegProv)"]
wow6432node["WOW6432Node"]
provider_architecture_context["__ProviderArchitectureコンテキスト"]
wmi_repository["WMIリポジトリ"]
winmgmt_command["winmgmt"]
wmi_repository_reset["WMIリポジトリのリセット"]
dmtf_datetime["DMTF日付形式"]
wmi -->|"実装を担う"| cim_standard
wmi -->|"利用する"| wmi_namespace
wmi -->|"利用する"| wql
wmi_provider -->|"実装を担う"| wmi_namespace
cim_cmdlets -->|"の後継"| wmi_v1_cmdlets
powershell -->|"利用する"| cim_cmdlets
cim_cmdlets -->|"利用する"| cim_session
cim_session -.->|"利用する"| winrm
cim_session -.->|"で構成できる"| dcom_protocol_option
wmi -->|"利用する"| dcom_protocol
winrm -.->|"利用する"| kerberos
trustedhosts -.->|"推奨される対応"| workgroup
system_management_namespace -->|"利用する"| wql
mi_api -->|"利用する"| cim_session
wmi_event_subscription -->|"利用する"| win32_processstarttrace
win32_processstarttrace -->|"前提とする"| admin_rights
wmi_event_subscription -.->|"の後継"| wmi_polling
unscoped_wmi_query -.->|"用いるのは非推奨"| wmi
wmi_polling -.->|"用いるのは非推奨"| continuous_performance_monitoring
stdregprov -.->|"原因になり得る"| wow6432node
wmi_provider -->|"で構成できる"| provider_architecture_context
wmi -->|"に保存される"| wmi_repository
wmi_repository -->|"で確認できる"| winmgmt_command
wmi_repository_reset -->|"用いるのは非推奨"| wmi_repository
system_management_namespace -->|"利用する"| dmtf_datetime
cim_cmdlets -->|"防止する"| dmtf_datetime
概念間の関係(全26件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- WMI(Windows Management Instrumentation)はCIM(Common Information Model)の実装を担います。
- WMI(Windows Management Instrumentation)はWMI名前空間を利用します。
- WMI(Windows Management Instrumentation)はWQLを利用します。
- WMIプロバイダーはWMI名前空間の実装を担います。
- CIMコマンドレットは旧WMIコマンドレット(WMI v1)の後継に当たります。
- PowerShellはCIMコマンドレットを利用します。
- CIMコマンドレットはCIMセッションを利用します。
- CIMセッションはWinRM(Windows Remote Management)を利用します。
- CIMセッションはDCOMプロトコルオプションで構成できます。
- WMI(Windows Management Instrumentation)はDCOMプロトコルを利用します。
- WinRM(Windows Remote Management)はKerberosを利用します。
- TrustedHostsはワークグループ構成に対する本記事の推奨です。
- System.Management(ManagementObjectSearcher)はWQLを利用します。
- MI API(Microsoft.Management.Infrastructure)はCIMセッションを利用します。
- WMIイベント購読はWin32_ProcessStartTraceを利用します。
- Win32_ProcessStartTraceは管理者権限を前提とします。
- WMIイベント購読はWMIの短周期ポーリングの後継に当たります。
- 絞り込まないWMI照会(SELECT *)をWMI(Windows Management Instrumentation)に用いることは推奨されません。
- WMIの短周期ポーリングを連続的なパフォーマンス監視に用いることは推奨されません。
- レジストリプロバイダー(StdRegProv)はWOW6432Nodeの原因になることがあります。
- WMIプロバイダーは__ProviderArchitectureコンテキストで構成できます。
- WMI(Windows Management Instrumentation)はWMIリポジトリに保存されます。
- WMIリポジトリはwinmgmtで確認できます。
- WMIリポジトリのリセットをWMIリポジトリに用いることは推奨されません。
- System.Management(ManagementObjectSearcher)はDMTF日付形式を利用します。
- CIMコマンドレットはDMTF日付形式を防ぎます。
主要概念の定義
機械可読データ
このデータセットについて
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。