サーチ…
備考
CIMとWMI
PowerShell 3.0以降、PowerShell、WMI、およびCIMで管理クラスを操作するには、2つの方法があります。 PowerShell 1.0および2.0では、WIMモジュールのみがサポートされました.WIMモジュールは、新しく改良されたCIMモジュールよりも優れています。 PowerShellの後のリリースでは、WMI-cmdletsが削除されます。
CIMモジュールとWMIモジュールの比較:
CIM-cmdlet | WMI-cmdlet | それは何ですか |
---|---|---|
Get-CimInstance | Get-WmiObject | クラスのCIM / WMIオブジェクトを取得する |
Invoke-CimMethod | Invoke-WmiMethod | CIM / WMIクラスメソッドを呼び出す |
Register-CimIndicationEvent | Register-WmiEvent | CIM / WMIクラスのイベントを登録する |
Remove-CimInstance | Remove-WmiObject | CIM / WMIオブジェクトを削除する |
Set-CimInstance | Set-WmiInstance | CIM / WMIオブジェクトの更新/保存 |
Get-CimAssociatedInstance | N / A | 関連するインスタンス(リンクされたオブジェクト/クラス)を取得する |
Get-CimClass | Get-WmiObject -List | CIM / WMIクラスのリスト |
New-CimInstance | N / A | 新しいCIMオブジェクトを作成する |
Get-CimSession | N / A | CIMセッションを一覧表示する |
New-CimSession | N / A | 新しいCIMセッションを作成する |
New-CimSessionOption | N / A | セッションオプションを使用してオブジェクトを作成します。プロトコル、エンコーディング、暗号化を無効にするなど( New-CimSession で使用する場合) |
Remove-CimSession | N / A | CIMセッションの削除/停止 |
その他のリソース
Windows PowerShellでCIMまたはWMIを使用する必要がありますか? @ Hey、Scripting Guy!ブログ
オブジェクトのクエリ
CIM / WMIは、デバイス上の情報または構成を照会するために最も一般的に使用されます。 PowerShellでは、これらのクラスとインスタンスにアクセスする複数の方法がありますが、最も一般的な方法はGet-CimInstance
(CIM)コマンドレットまたはGet-WmiObject
(WMI)コマンドレットを使用する方法です。
CIMクラスのすべてのオブジェクトを一覧表示する
クラスのすべてのインスタンスをリストすることができます。
CIM:
> Get-CimInstance -ClassName Win32_Process
ProcessId Name HandleCount WorkingSetSize VirtualSize
--------- ---- ----------- -------------- -----------
0 System Idle Process 0 4096 65536
4 System 1459 32768 3563520
480 Secure System 0 3731456 0
484 smss.exe 52 372736 2199029891072
....
....
WMI:
Get-WmiObject -Class Win32_Process
フィルタの使用
フィルタを適用して、CIM / WMIクラスの特定のインスタンスのみを取得することができます。フィルタは、 WQL
(デフォルト)またはCQL(Add -QueryDialect CQL
)を使用して記述されます。 -Filter
は、完全なWQL / CQLクエリのWHERE
部分を使用します。
CIM:
Get-CimInstance -ClassName Win32_Process -Filter "Name = 'powershell.exe'"
ProcessId Name HandleCount WorkingSetSize VirtualSize
--------- ---- ----------- -------------- -----------
4800 powershell.exe 676 88305664 2199697199104
WMI:
Get-WmiObject -Class Win32_Process -Filter "Name = 'powershell.exe'"
...
Caption : powershell.exe
CommandLine : "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
CreationClassName : Win32_Process
CreationDate : 20160913184324.393887+120
CSCreationClassName : Win32_ComputerSystem
CSName : STACKOVERFLOW-PC
Description : powershell.exe
ExecutablePath : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ExecutionState :
Handle : 4800
HandleCount : 673
....
WQLクエリを使用する:
また、WQL / CQLクエリを使用して、インスタンスのクエリとフィルタリングを行うこともできます。
CIM:
Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name = 'powershell.exe'"
ProcessId Name HandleCount WorkingSetSize VirtualSize
--------- ---- ----------- -------------- -----------
4800 powershell.exe 673 88387584 2199696674816
別の名前空間のオブジェクトのクエリ:
CIM:
> Get-CimInstance -Namespace "root/SecurityCenter2" -ClassName AntiVirusProduct
displayName : Windows Defender
instanceGuid : {D68DDC3A-831F-4fae-9E44-DA132C1ACF46}
pathToSignedProductExe : %ProgramFiles%\Windows Defender\MSASCui.exe
pathToSignedReportingExe : %ProgramFiles%\Windows Defender\MsMpeng.exe
productState : 397568
timestamp : Fri, 09 Sep 2016 21:26:41 GMT
PSComputerName :
WMI:
> Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct
__GENUS : 2
__CLASS : AntiVirusProduct
__SUPERCLASS :
__DYNASTY : AntiVirusProduct
__RELPATH : AntiVirusProduct.instanceGuid="{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}"
__PROPERTY_COUNT : 6
__DERIVATION : {}
__SERVER : STACKOVERFLOW-PC
__NAMESPACE : ROOT\SecurityCenter2
__PATH : \\STACKOVERFLOW-PC\ROOT\SecurityCenter2:AntiVirusProduct.instanceGuid="{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}"
displayName : Windows Defender
instanceGuid : {D68DDC3A-831F-4fae-9E44-DA132C1ACF46}
pathToSignedProductExe : %ProgramFiles%\Windows Defender\MSASCui.exe
pathToSignedReportingExe : %ProgramFiles%\Windows Defender\MsMpeng.exe
productState : 397568
timestamp : Fri, 09 Sep 2016 21:26:41 GMT
PSComputerName : STACKOVERFLOW-PC
クラスと名前空間
CIMとWMIには、複数の名前空間に分かれている多くのクラスがあります。 Windowsの最も一般的な(そしてデフォルトの)名前空間はroot/cimv2
です。 righクラスを見つけるには、allまたはsearchをリストすると便利です。
利用可能なクラスを一覧表示する
コンピュータ上のデフォルトネームスペース( root/cimv2
)にある使用可能なクラスをすべて一覧表示できます。
CIM:
Get-CimClass
WMI:
Get-WmiObject -List
クラスを検索する
ワイルドカードを使用して特定のクラスを検索することができます。 Ex: process
という単語を含むクラスを見つける。
CIM:
> Get-CimClass -ClassName "*Process*"
NameSpace: ROOT/CIMV2
CimClassName CimClassMethods CimClassProperties
------------ --------------- ------------------
Win32_ProcessTrace {} {SECURITY_DESCRIPTOR, TIME_CREATED, ParentProcessID, ProcessID...}
Win32_ProcessStartTrace {} {SECURITY_DESCRIPTOR, TIME_CREATED, ParentProcessID, ProcessID...}
Win32_ProcessStopTrace {} {SECURITY_DESCRIPTOR, TIME_CREATED, ParentProcessID, ProcessID...}
CIM_Process {} {Caption, Description, InstallDate, Name...}
Win32_Process {Create, Terminat... {Caption, Description, InstallDate, Name...}
CIM_Processor {SetPowerState, R... {Caption, Description, InstallDate, Name...}
Win32_Processor {SetPowerState, R... {Caption, Description, InstallDate, Name...}
...
WMI:
Get-WmiObject -List -Class "*Process*"
異なる名前空間のクラスを一覧表示する
ルート名前空間は単にroot
と呼ばれます。 -NameSpace
パラメーターを使用して、別の名前空間にクラスをリストすることができます。
CIM:
> Get-CimClass -Namespace "root/SecurityCenter2"
NameSpace: ROOT/SecurityCenter2
CimClassName CimClassMethods CimClassProperties
------------ --------------- ------------------
....
AntiSpywareProduct {} {displayName, instanceGuid, pathToSignedProductExe, pathToSignedReportingE...
AntiVirusProduct {} {displayName, instanceGuid, pathToSignedProductExe, pathToSignedReportingE...
FirewallProduct {} {displayName, instanceGuid, pathToSignedProductExe, pathToSignedReportingE...
WMI:
Get-WmiObject -Class "__Namespace" -Namespace "root"
利用可能な名前空間を一覧表示する
root
(または別のネームスペース)の使用可能な子ネームスペースを見つけるには、そのネームスペースの__NAMESPACE
内のオブジェクトを照会します。
CIM:
> Get-CimInstance -Namespace "root" -ClassName "__Namespace"
Name PSComputerName
---- --------------
subscription
DEFAULT
CIMV2
msdtc
Cli
SECURITY
HyperVCluster
SecurityCenter2
RSOP
PEH
StandardCimv2
WMI
directory
Policy
virtualization
Interop
Hardware
ServiceModel
SecurityCenter
Microsoft
aspnet
Appv
WMI:
Get-WmiObject -List -Namespace "root"