mirror of
https://github.com/fleetdm/fleet
synced 2026-05-16 13:38:43 +00:00
Feature branch for the #9949 story. --------- Co-authored-by: Jahziel Villasana-Espinoza <jahziel@fleetdm.com> Co-authored-by: Roberto Dip <me@roperzh.com> Co-authored-by: Gabriel Hernandez <ghernandez345@gmail.com> Co-authored-by: Sarah Gillespie <sarah@fleetdm.com>
35 lines
1.5 KiB
PowerShell
35 lines
1.5 KiB
PowerShell
# PowerShell script to log off all non-administrative users and disable their accounts
|
|
|
|
# Log off all non-administrative users
|
|
$loggedOffUsers = @{}
|
|
Get-WmiObject -Class Win32_UserProfile | Where-Object { $_.Special -eq $false } | ForEach-Object {
|
|
$username = $_.LocalPath.Split('\')[-1]
|
|
if ($username -ne "Administrator" -and $username -ne $env:USERNAME -and -not $loggedOffUsers.ContainsKey($username)) {
|
|
try {
|
|
$userSessions = query user | Where-Object { $_ -match "\b$username\b" }
|
|
foreach ($session in $userSessions) {
|
|
if ($session -match "\s+(\d+)\s+Disc\s+") {
|
|
# Disconnected sessions can't be logged off
|
|
continue
|
|
}
|
|
elseif ($session -match "\s+(\d+)\s+") {
|
|
$sessionID = $matches[1]
|
|
logoff $sessionID
|
|
$loggedOffUsers[$username] = $true
|
|
Write-Host "Logged out user: $username"
|
|
}
|
|
}
|
|
} catch {
|
|
Write-Host "Could not log off user: $username. Error: $($_.Exception.Message)"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Disable all non-administrative local user accounts
|
|
Get-LocalUser | Where-Object { $_.Enabled -eq $true -and $_.Name -ne "Administrator" } | ForEach-Object {
|
|
$username = $_.Name
|
|
Disable-LocalUser -Name $username
|
|
Write-Host "Disabled account for $username"
|
|
}
|
|
|
|
Write-Host "All non-administrative users have been logged out and their accounts disabled."
|