WMI v1 Cmdlets
は廃されつつあり(Nano Server向けのPowerShellや、PowerShell Core 6.0 以降では既に廃止)、 CIM Cmdlets
への移行が促されているので。
プロパティを閲覧するだけなら、 Get-WmiObject
を Get-CimInstance
に、 -Class
を -ClassName
に置き換えるだけで済むことも多いようですが。
CIM プロパティ・メソッドの一覧
Class Properties の表示
(Get-CimClass -Namespace root/CIMV2/TerminalServices -ClassName Win32_TerminalServiceSetting).CimClassProperties;
Class Methods の表示
(Get-CimClass -Namespace root/CIMV2/TerminalServices -ClassName Win32_TerminalServiceSetting).CimClassMethods;
メソッドの実行に必要な引数の名前はこのような感じで確認できます。
WMI -> CIM メソッド実行の書き換え例
例: ログオフ
この例ではリモートコンピュータを指定しているため、対象のコンピュータ(この場合は .
= 自分自身)で Windows Remote Management (WinRM) 機能の有効化(対象コンピュータの管理者権限のPowerShell上で Enable-PSRemoting
を実行する)、及びネットワークのプロファイルをPrivateに設定する(Publicのネットワークからは WinRM の接続を受け入れない)。
-
WMI
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(0);
- CIM
Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName .|
Invoke-CimMethod -MethodName Win32Shutdown -Arguments @{Flags=0};
例: リモートデスクトップの許可
-
GUI での相当操作:
control.exe sysdm.cpl ,5
(システムのプロパティ - リモート) - リモートデスクトップ - 「このコンピューターへのリモート接続を許可する」に変更 -
WMI
(Get-WmiObject -Namespace root\CIMV2\TerminalServices -Class Win32_TerminalServiceSetting).SetAllowTSConnections(1,1);
- CIM
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TerminalServiceSetting|
Invoke-CimMethod -MethodName SetAllowTSConnections -Arguments @{AllowTSConnections=1;ModifyFirewallException=1};