Nous souhaitons ici "archiver" des comptes utilisateurs locaux sur un serveur Windows 2022/2025 en Core (sans interface utilisateur).
Nous allons d'abord archiver (zipper) leur répertoire utilisateur (C:\Users\$utilisateur), puis désactiver le compte utilisateur.
# Liste des utilisateurs
$utilisateurs = @("UTILISATEUR01", "UTILISATEUR02", "UTILISATEUR03")
# Crée le répertoire d'archives s'il n'existe pas
New-Item -ItemType Directory -Path "C:\Archives" -Force
# Archivage des répertoires utilisateur
foreach ($user in $utilisateurs) {
$sourcePath = "C:\Users\$user"
$zipPath = "C:\Archives\$user.zip"
if (Test-Path $sourcePath) {
Compress-Archive -Path $sourcePath -DestinationPath $zipPath -Force
Write-Host "Le répertoire utilisateur $user a été archivé avec succès."
} else {
Write-Warning "Le répertoire utilisateur de $user n'existe pas."
}
}
# Supprimer les comptes utilisateurs
foreach ($user in $utilisateurs) {
# Vérifie si l'utilisateur existe avant suppression
if (Get-LocalUser -Name $user -ErrorAction SilentlyContinue) {
Remove-LocalUser -Name $user
Write-Host "Le compte utilisateur $user a été supprimé avec succès."
} else {
Write-Warning "Le compte utilisateur $user n'existe pas ou a déjà été supprimé."
}
}
# Déconnecter les utilisateurs :
$currentSession = (qwinsta | Select-String '>' | ForEach-Object { ($_ -split '\s+')[3] })
foreach ($user in $utilisateurs) {
# Identifie toutes les sessions ouvertes pour l'utilisateur, sauf ta propre session actuelle
$sessions = quser | Select-String $user | ForEach-Object {
$sessionId = ($_ -split '\s+')[2]
if ($sessionId -ne $currentSession) {
$sessionId
}
}
# Déconnecte les sessions ouvertes
foreach ($id in $sessions) {
logoff $id /V
Write-Host "Session ID $id de l'utilisateur $user déconnectée avec succès."
}
}
# Commencer à supprimer le contenu des répertoires utilisateur
foreach ($user in $utilisateurs) {
Remove-Item -Path C:\Users\$user -Recurse -Force
}
Tous les fichiers des répertoires utilisateurs ne se supprimeront pas.
Il sera nécessaire de redémarrer le serveur avant de tenter de tout supprimer à nouveau.