icinga-powershell-framework/lib/provider/users/Get-IcingaLoggedOnUsers.psm1

44 lines
1.1 KiB
PowerShell
Raw Normal View History

function Get-IcingaLoggedOnUsers()
{
param(
[array]$UserFilter = @()
);
[hashtable]$UserList = @{};
[int]$UserCount = 0;
$UserList.Add('users', @{ });
$Users = Get-CIMInstance Win32_LoggedOnUser | Select-Object Antecedent, Dependent;
foreach ($user in $Users) {
[string]$username = $user.Antecedent.Name;
if ($UserFilter.Count -ne 0) {
if (-Not $UserFilter.Contains($username)) {
continue;
}
}
$UserCount += 1;
if ($UserList.users.ContainsKey($username) -eq $FALSE) {
$UserList.users.Add(
$username,
@{
'domains' = @($user.Antecedent.Domain);
'logonid' = @($user.Dependent.LogonId);
'count' = 1;
}
);
} else {
$UserList.users[$username].domains += $user.Antecedent.Domain;
$UserList.users[$username].logonid += $user.Dependent.LogonId;
$UserList.users[$username].count += 1;
}
}
$UserList.Add('count', $UserCount);
return $UserList;
}