A handy function to get account names from SIDs and SIDs from account name, receiving local SIDs from remote machine will follow.
function Get-SID_NAME(
[Parameter(Position=2)][string]$domain=$env:userdomain,
[Parameter(Mandatory=$True,Position=1)][string]$search,
[switch]$Local)
{
if($search -match '\\'){
$domain=$search.Split('\')[0]
$search=$search.Split('\')[1]
}
if($search -match '^S-1-5-21-'){
$objSID = New-Object System.Security.Principal.SecurityIdentifier($search)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
return $objUser.Value
}else{
if($Local){
$objUser = New-Object System.Security.Principal.NTAccount($search)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
return $strSID.Value
} else {
$objUser = New-Object System.Security.Principal.NTAccount($domain, $search)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
return $strSID.Value
}
}
}
Source from most of the code :
https://technet.microsoft.com/en-us/library/ff730940.aspx