Dzisiaj podzielę się skryptem, który wykrywa profile użytkowników na serwerze, które nie były używane przez określoną liczbę dni (np. 60) i usuwa je automatycznie, aby zwolnić miejsce oraz zadbać o porządek na serwerze.
Założenia:
- Skrypt jest uruchamiany na serwerze z systemem Windows.
- Można dostosować liczbę dni, po których nieużywane profile będą usuwane.
- Skrypt zapisuje do pliku usunięte profile
Ten skrypt można oczywiście wykonać na wielu serwerach, wystarczy na wejściu podać listę serwerów na których skrypt ma być wykonany.
Kod skryptu poniżej:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# Konfiguracja $daysUnused = 60 # Liczba dni, po których profil jest uznawany za stary $logFile = "C:\Dell\usunieteProfile.txt" # Ścieżka do pliku logu # Pobranie daty z ograniczeniem czasu $limitDate = (Get-Date).AddDays(-$daysUnused) function LogMessage($message) { $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" Add-Content -Path $logFile -Value "$timestamp - $message" } # Funkcja do konwersji WMI czasu na obiekt DateTime function Convert-WmiTime($wmiTime) { try { return [DateTime]::ParseExact($wmiTime.Substring(0, 14), "yyyyMMddHHmmss", $null) } catch { return $null } } # Pobranie listy profili użytkowników $profiles = Get-WmiObject -Class Win32_UserProfile | Where-Object { $_.LastUseTime -ne $null -and (Convert-WmiTime $_.LastUseTime) -lt $limitDate } # Przetworzenie znalezionych profili foreach ($profile in $profiles) { $username = $profile.LocalPath -replace '.*\\', '' $lastUsed = Convert-WmiTime $profile.LastUseTime try { # Próbujemy usunąć stary profil Remove-WmiObject -Path $profile.__PATH LogMessage "Usunięto profil użytkownika: $username (Ostatnie użycie: $lastUsed)" Write-Host "Usunięto profil użytkownika: $username (Ostatnie użycie: $lastUsed)" } catch { # Obsługa błędów, jeśli usuwanie profilu nie powiedzie się LogMessage "Błąd podczas usuwania profilu użytkownika: $username - $_" Write-Host "Błąd podczas usuwania profilu użytkownika: $username - $_" } } |