経緯
Windows のローカルアカウントのSIDを調べる必要がでてきました。 欲しいのはローカルユーザのみ。ドメインユーザを取ってくると多すぎるので弾きます。
取得方法
調べると下記のようなコマンドがよく出てくる。
Get-WmiObject win32_useraccount name,sid
が、実行してもエラーになってしまいます。
Get-WmiObject: The term 'Get-WmiObject' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
どうやらコマンドが廃止になってしまったみたいです。 今はPowerShell 経由でこちらのコマンドがいいようです。
Get-CimInstance -ClassName Win32_UserAccount | ? { $_.LocalAccount -eq $true }
引用元:https://tex2e.github.io/blog/powershell/list-user
これでOK
グループのSIDをとりたい
こちらはちょっと別。 グループのSIDを全部さくっと検索するなら
WMIC group get name,sid
PowerShellでローカルグループだけ拾うならこんな感じ。
Get-CimInstance -ClassName Win32_Group | ? { $_.LocalAccount -eq $true }
おまけ
これまでのコマンドで分かる通り、適切なClassNameが分かれば色々とってこれそう。 というわけでどんなClassNameがあるの?(WMIオブジェクトがあるの?)となるのですが、調べ方は公式に記載があります。 https://learn.microsoft.com/ja-jp/powershell/scripting/samples/getting-wmi-objects--get-ciminstance-?view=powershell-7.3
一覧を引っ張ってくるならソートした方が見やすいと思う。
Get-CimClass -Namespace root/CIMV2 | Where-Object CimClassName -like Win32* | Select-Object CimClassName | Sort-Object CimClassName