Function Get-LogOffUser($ComputerName){ Try { $userName = (Get-CimInstance -Class win32_computersystem -ComputerName $ComputerName).UserName if(!$userName) { $userName = "**None**" Write-Host "No logged in user on $ComputerName" -ForegroundColor Green return }else{ Write-Host "You are about to remotely logoff [$userName] from this [$ComputerName]" } } Catch { Write-Host "Could not connect to the target computer.`nCheck that the computer is powered on and the name is typed correctly." -ForegroundColor Yellow -BackgroundColor DarkCyan } #Displays the username for the current user, then prompts for a 'Yes' or 'No (Cancel)' $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes (Logoff $username)" $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No (Cancel)" $options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no) $result = $host.ui.PromptForChoice($title, $message, $options, 0) #If you select Yes, then the following switch (0) runs #If you select No, then a message displays and the script will exit Switch ($result) { 0{ #If you've gotten this far, then $computerWMI should have connected successfully to the remote computer #There is also a user logged in, and the correct user has been confirmed by pressing the 'Yes' button #This portion of the switch connects to the Win32_OperatingSystem class, then issues a logoff command Write-host "Attempting to logoff [$userName] from [$ComputerName]." -ForegroundColor Yellow Try { (Get-WmiObject -Class win32_operatingsystem -ComputerName $ComputerName -ErrorAction Stop).Win32Shutdown(4) | out-null Start-Sleep -s 5 Write-Host "User should now be logged off." -ForegroundColor Green } Catch { Write-Host "Could not connect to the target [$ComputerName]. `nPlease verify that the computer is still powered on and is on the Samaritan network." -ForegroundColor Yellow -BackgroundColor Red } } #This only happens if the user selects "No." Displays a message, then exits the script. 1{ Write-host "Canceling logging off user." -ForegroundColor Yellow } } }