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 .. ..
これでグループ名も取得できました。