Recently I had the Remote desktop services stop responding while I was working out of the office. Since I didn’t really want to go in to reboot the machine I decided I would do it remotely.
Even though it was the weekend I decided that I better check no one else was on the machine doing anything. The following script can be used to see who is on a machine.
param ( [string]$computername = "." ) $explorerprocesses = @(Get-WmiObject -Query "Select * FROM Win32_Process WHERE Name='explorer.exe'" -ComputerName $computername -ErrorAction SilentlyContinue) if ($explorerprocesses.Count -eq 0) { "No explorer process found / Nobody interactively logged on" } else { foreach ($i in $explorerprocesses) { $Username = $i.GetOwner().User $Domain = $i.GetOwner().Domain $Domain + "\" + $Username + " logged on since: " + ($i.ConvertToDateTime($i.CreationDate)) } }
Used as below:
.\UserLoggedOn.ps1 -computername "ComputerName"
Results similar to:
DOMAIN\ACCOUNT1 logged on since: 04/30/2017 12:39:09 DOMAIN\ACCOUNT2 logged on since: 04/30/2017 12:41:16
Once I was happy no one was doing anything important I used:
Restart-Computer -computername "Computername" -force
-force forces restart when users are logged on.