icinga-powershell-framework/lib/core/tools/Get-IcingaUserSID.psm1

37 lines
1 KiB
PowerShell
Raw Normal View History

function Get-IcingaUserSID()
{
param(
[string]$User
);
2021-08-06 12:12:27 -04:00
if ([string]::IsNullOrEmpty($User)) {
return $null;
}
if ($User -eq 'LocalSystem') {
$User = 'NT Authority\SYSTEM';
}
$UserData = Split-IcingaUserDomain -User $User;
try {
$NTUser = New-Object System.Security.Principal.NTAccount($UserData.Domain, $UserData.User);
$SecurityData = $NTUser.Translate([System.Security.Principal.SecurityIdentifier]);
} catch {
2021-08-06 12:12:27 -04:00
try {
# Try again but this time with our domain
$UserData.Domain = (Get-IcingaWindowsInformation -ClassName Win32_ComputerSystem).Domain;
$NTUser = New-Object System.Security.Principal.NTAccount($UserData.Domain, $UserData.User);
$SecurityData = $NTUser.Translate([System.Security.Principal.SecurityIdentifier]);
} catch {
return $null;
2021-08-06 12:12:27 -04:00
}
}
if ($null -eq $SecurityData) {
return $null;
}
return $SecurityData.Value;
}