ドメイン名、ユーザ名と関連するSIDを相互変換するPowerShellスクリプト

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