Helpers/SecurityPolicy.psm1
function ConvertTo-NTAccountUser { [CmdletBinding()] [OutputType([hashtable])] Param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [string] $Name ) process { try { # Identity doesn't exist on when Hyper-V isn't installed if ($Name -eq "NT VIRTUAL MACHINE\Virtual Machines" -and (Get-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V").State -ne "Enabled") { return $null } Write-Verbose "[ConvertTo-NTAccountUser] Converting identity '$Name' to NTAccount" if ($Name -match "^(S-[0-9-]{3,})") { $sidAccount = [System.Security.Principal.SecurityIdentifier]$Name } else { $sidAccount = ([System.Security.Principal.NTAccount]$Name).Translate([System.Security.Principal.SecurityIdentifier]) } return @{ Account = $sidAccount.Translate([System.Security.Principal.NTAccount]) Sid = $sidAccount.Value } } catch{ return @{ Account = "Orphaned Account" Sid = $Name } } } } |