80 lines
2.4 KiB
PowerShell
80 lines
2.4 KiB
PowerShell
function Revoke-LogonUsers {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Logs out all user sessions with an option to skip the current user
|
|
|
|
.DESCRIPTION
|
|
This function is used to log out all remote or local sessions from a computer
|
|
If passed with -skipMe, the current user's session will not be terminated
|
|
|
|
.PARAMETER skipMe
|
|
[switch] Skips the current user session. Optional.
|
|
|
|
.EXAMPLE
|
|
Revoke-LogonUsers
|
|
|
|
[Revoke-LogonUsers] : Logging Off Users:
|
|
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
|
|
sakbar 11 Disc 20:38 8/15/2019 9:07 PM
|
|
msatpathy 12 Disc 20:51 8/15/2019 9:15 PM
|
|
>dsage rdp-tcp#10 13 Active . 8/16/2019 4:45 PM
|
|
ccoane rdp-tcp#9 14 Active 19 8/16/2019 5:07 PM
|
|
Logging off session ID 11
|
|
Logging off session ID 12
|
|
Logging off session ID 13
|
|
<<Poof, your session disconnects>>
|
|
|
|
.EXAMPLE
|
|
Revoke-LogonUsers -skipMe
|
|
|
|
[Revoke-LogonUsers] : Logging Off Users:
|
|
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
|
|
sakbar 11 Disc 20:38 8/15/2019 9:07 PM
|
|
msatpathy 12 Disc 20:51 8/15/2019 9:15 PM
|
|
>dsage rdp-tcp#10 13 Active . 8/16/2019 4:45 PM
|
|
ccoane rdp-tcp#9 14 Active 19 8/16/2019 5:07 PM
|
|
Logging off session ID 11
|
|
Logging off session ID 12
|
|
[Revoke-LogonUsers] : Skipping Current User Session
|
|
Logging off session ID 14
|
|
|
|
#>
|
|
[CmdletBinding()]
|
|
Param(
|
|
[Parameter(Mandatory=$false)]
|
|
[switch]$skipMe
|
|
)
|
|
|
|
$logLead = (Get-LogLeadName);
|
|
|
|
if (Test-IsAdmin) {
|
|
|
|
$query = query user 2> $null
|
|
if($query) {
|
|
|
|
Write-Host "$logLead : Logging Off Users:"
|
|
$query
|
|
|
|
$users = query user | Select-Object -Skip 1 | Where-Object {($_ -split "\s+")[-5]}
|
|
|
|
foreach ($userLine in $users) {
|
|
|
|
if ($skipMe.IsPresent -and $userLine -match "$env:username") {
|
|
|
|
Write-Host "$logLead : Skipping Current User Session"
|
|
continue;
|
|
}
|
|
|
|
logoff ($userLine -split "\s+")[-6] /V
|
|
}
|
|
} else {
|
|
|
|
Write-Host ("$logLead : No User Sessions Found")
|
|
}
|
|
} else {
|
|
|
|
throw ("$logLead : Local Administrative Privileges are Required to Execute This Function")
|
|
}
|
|
}
|