Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function Get-LoggedOnUsers(){
- param(
- [Parameter(ValueFromPipeline=$true)]
- [PSCustomObject]
- $Computer
- )
- Begin{
- $Computers = New-Object -TypeName System.Collections.ArrayList
- }
- Process{
- $UsernameJob = Invoke-Command -ComputerName $Computer.Name -ScriptBlock {Get-WmiObject -Class Win32_Process -Filter "Name='explorer.exe'" | ForEach-Object{$_.GetOwner().User} | Select-Object -Unique} -AsJob
- $LockedJob = Invoke-Command -ComputerName $Computer.Name -ScriptBlock {Get-WmiObject -Class Win32_Process -Filter "Name='logonui.exe'"} -AsJob
- Add-Member -InputObject $Computer -MemberType NoteProperty -Name "UsernameJob" -Value $UsernameJob -Force
- Add-Member -InputObject $Computer -MemberType NoteProperty -Name "LockedJob" -Value $LockedJob -Force
- $Computers.Add($Computer) | Out-Null
- }
- End{
- Get-Job | Wait-Job | Out-Null
- ForEach($Computer in $Computers){
- $Username = Receive-Job $Computer.UsernameJob
- $Locked = Receive-Job $Computer.LockedJob
- If($Locked){$Locked = "Locked"}
- Add-Member -InputObject $Computer -MemberType NoteProperty -Name "Username" -Value $Username -Force
- Add-Member -InputObject $Computer -MemberType NoteProperty -Name "Locked" -Value $Locked -Force
- }
- Get-Job | Remove-Job
- $Computers = $Computers | Where-Object {$_.Username -ne $null} | Select-Object -Property * -ExcludeProperty UsernameJob, LockedJob
- $Computers
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment