From a02c57b9a039c0a3310ece60a1c3be329c7ceac3 Mon Sep 17 00:00:00 2001 From: Lord Hepipud Date: Mon, 19 Aug 2019 12:12:59 +0200 Subject: [PATCH] Added provider for logged in Windows users --- .../users/Get-IcingaLoggedOnUsers.psm1 | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lib/provider/users/Get-IcingaLoggedOnUsers.psm1 diff --git a/lib/provider/users/Get-IcingaLoggedOnUsers.psm1 b/lib/provider/users/Get-IcingaLoggedOnUsers.psm1 new file mode 100644 index 0000000..351525c --- /dev/null +++ b/lib/provider/users/Get-IcingaLoggedOnUsers.psm1 @@ -0,0 +1,43 @@ +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; +}