Windowsのドメイン名やユーザ名とSIDを相互変換するPowerShellスクリプトを作ってみました。エラーハンドリング無しです。
function Convert-UserAndSid { [CmdletBinding()] [OutputType([String])] Param ( # パラメーター 1 のヘルプの説明 [Parameter(Mandatory=$true,ParameterSetName='USER')] [String]$UserName, [Parameter(Mandatory=$false,ParameterSetName='USER')] [String]$DomainName, [Parameter(Mandatory=$true,ParameterSetName='SID')] [String]$Sid ) if((-not $DomainName) -and $UserName) { (New-Object System.Security.Principal.NTAccount($UserName)).Translate([System.Security.Principal.SecurityIdentifier]).Value } elseif($DomainName -and $UserName) { (New-Object System.Security.Principal.NTAccount($DomainName,$UserName)).Translate([System.Security.Principal.SecurityIdentifier]).Value } elseif($Sid) { (New-Object System.Security.Principal.SecurityIdentifier($Sid)).Translate([System.Security.Principal.NTAccount]).Value } }
使用例①(ローカルユーザ⇒SID)
PS> Convert-UserAndSid -UserName myUser
S-X-X-XX-XXXXXXXXXX-XXXXXXXXX-XXXXXXXXXX-XXX
使用例②(ドメインユーザ⇒SID)
PS> Convert-UserAndSid -DomainName myDomain -UserName myUser S-Y-Y-YY-YYYYYYYYYY-YYYYYYYYYY-YYYYYYYYYY-YYY
使用例③(SID⇒ユーザ名)
PS> Convert-UserAndSid -Sid S-X-X-XX-XXXXXXXXXX-XXXXXXXXX-XXXXXXXXXX-XXX
MyPC\myUser
PS> Convert-UserAndSid -Sid S-Y-Y-YY-YYYYYYYYYY-YYYYYYYYYY-YYYYYYYYYY-YYY
MyDomain\myUser