PowerShellで現在のユーザやグループなどのID情報を取得する方法

PowerShellでIdentity関連情報を取得する方法です。

ユーザ情報を取得する

まず、ユーザ情報のオブジェクトを取得します。

[System.Security.Principal.WindowsIdentity]::GetCurrent()

WindowsIdentityオブジェクトが返ってきます。
WindowsIdentity クラス (System.Security.Principal)
 
 

ユーザ名を取り出す

WindowsIdentityオブジェクトからユーザ名を取り出すためには、Nameプロパティを取得します。

PS> $userinfo = [System.Security.Principal.WindowsIdentity]::GetCurrent()
PS> $userinfo.Name
Domain\username

 
 
 

グループ名を取得する

同じようにグループ情報を取得しようとすると、SIDとなってしまいます。このままではグループ名がわかりません。

PS> $userinfo = [System.Security.Principal.WindowsIdentity]::GetCurrent()
PS> $userinfo.Groups
BinaryLength AccountDomainSid                                     Value                                               
------------ ----------------                                     -----                                               
28           S-1-1-10-123456789-1234567890-1234567890-123         S-1-1-10-123456789-1234567890-1234567890-123 
28           S-1-1-10-123456789-1234567890-1234567890-123         S-1-1-10-123456789-1234567890-1234567890-123 
28           S-1-1-10-123456789-1234567890-1234567890-123         S-1-1-10-123456789-1234567890-1234567890-123 
..
..

 
そこでSIDを読める形に翻訳してみます。

$userinfo = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$userinfo.Groups | foreach{ $_.Translate([System.Security.Principal.NTAccount]) }

Value                                                                                                                                                          
-----                                                                                                                                                          
Everyone                                                                                                                                                       
BUILTIN\Performance Log Users                                                                                                                                  
BUILTIN\Users   
..
..

これでグループ名も取得できました。