Archiver un compte utilisateur en Core

Introduction

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.


Le script PowerShell

# 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

}

Note importante

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.


⬆️ Retour en haut de la page