-
Notifications
You must be signed in to change notification settings - Fork 522
/
Get-LoggedOnUser.ps1
57 lines (51 loc) · 1.18 KB
/
Get-LoggedOnUser.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function Get-LoggedOnUser
{
<#
.SYNOPSIS
This function queries CIM on the local or a remote computer and returns the user (local or Active Directory) that is currently
logged on.
.EXAMPLE
PS> Get-LoggedOnUser
This would query the local computer and return the user logged on.
.EXAMPLE
PS> Get-LoggedOnUser -ComputerName CLIENT
This would query the remote computer CLIENT and return the user logged on.
.PARAMETER ComputerName
The name of the computer you'd like to run this function against.
#>
[OutputType([pscustomobject])]
[CmdletBinding()]
param
(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string[]]$ComputerName = $env:COMPUTERNAME
)
begin
{
$ErrorActionPreference = 'Stop'
}
process
{
try
{
foreach ($comp in $ComputerName)
{
$output = @{
ComputerName = $comp
UserName = 'Unknown'
ComputerStatus = 'Offline'
}
if (Test-Connection -ComputerName $comp -Count 1 -Quiet) {
$output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
$output.ComputerStatus = 'Online'
}
[pscustomobject]$output
}
}
catch
{
$PSCmdlet.ThrowTerminatingError($_)
}
}
}