14634
28.04.2015, aktualisiert am 11.01.2016
15784
14
0
AD User gelöscht Basisordner bleibt bestehen
Hallo zusammen,
kurz zur Infrastruktur:
Domäne 2012R2
Client: Windows 7 32bit
die User sind im AD angelegt und unter Profil -> Basisordner -> "Verbinden von" ist das Homelaufwerk des jeweiligen User hinterlegt, der String schaut wie folgt aus:
\\server\h$\%username%
soweit alles noch gut.
Sobald ist aber User lösche, wird leider nicht der Ordner unter h$ gelöscht sondern bleibt bestehen, dies führt natürlich zu viel Datenmüll.
Hat jemand eine gute Idee wie ich die toten Ordner löschen kann? Manuel würde ich das ungerne machen, da es sich doch um einige Ordner handelt.
kurz zur Infrastruktur:
Domäne 2012R2
Client: Windows 7 32bit
die User sind im AD angelegt und unter Profil -> Basisordner -> "Verbinden von" ist das Homelaufwerk des jeweiligen User hinterlegt, der String schaut wie folgt aus:
\\server\h$\%username%
soweit alles noch gut.
Sobald ist aber User lösche, wird leider nicht der Ordner unter h$ gelöscht sondern bleibt bestehen, dies führt natürlich zu viel Datenmüll.
Hat jemand eine gute Idee wie ich die toten Ordner löschen kann? Manuel würde ich das ungerne machen, da es sich doch um einige Ordner handelt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 270508
Url: https://administrator.de/contentid/270508
Ausgedruckt am: 08.11.2024 um 08:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo,
die Ordner werden auch aus guten Gründen nicht automatisch gelöscht.
Allein aus Datenschutzgründen ist dem Arbeitnehmer seib Profiel eine Private Angelegenheit, die durch Firmenrichtlinien entsprächend abgesichert werden muss.
Du kannst ein Script schreiben, das die checkt ob der Besitzer jemand ist den es gibt und wenn nicht alles löscht.
Gruß
Chonta
die Ordner werden auch aus guten Gründen nicht automatisch gelöscht.
Allein aus Datenschutzgründen ist dem Arbeitnehmer seib Profiel eine Private Angelegenheit, die durch Firmenrichtlinien entsprächend abgesichert werden muss.
Du kannst ein Script schreiben, das die checkt ob der Besitzer jemand ist den es gibt und wenn nicht alles löscht.
Gruß
Chonta
Moin,
Gruß,
Dani
Sobald ist aber User lösche, wird leider nicht der Ordner unter h$ gelöscht sondern bleibt bestehen, dies führt natürlich zu viel Datenmüll.
Wir haben das Löschen von Benutzer inzwischen gescriptet mit Hilfe von Powershell. Denn es gibt noch andere Abhängigkeiten wie z.B. Gruppen, wo SID-Leichen zurückbleiben. Somit wird alles sauber entfernt und zum Schluss Exchangepostfach und Benutzer entfernt.Gruß,
Dani
Hallo zusammen,
mit einem fertigen Script wie es Dani zu haben scheint kann ich gerade nicht aufwarten, aber wenn es nur darum geht das Verzeichnis mit den Usern im AD abzugleichen und die unzugeordneten Ordner ausfindig zu machen und zu löschen kann ich hiermit als Grundlage dienen:
Der der Useraccount der das Script ausführt sollte natürlich genügend Rechte auf den Ordnern besitzen, ansonsten müsste man noch ein "takeown" und die ACL anpassen einbauen.
In Zeile 7 ist das Löschen im Moment mit einer Abfrage versehen -Confirm:$true, möchte man das nicht, legt man es hier auf $false.
Grüße Uwe
p.s. Man kann solche Aufräum-Scripte auch mit den CMDLet-Extension-Agents koppeln, dann werden beim einfachen Löschen eines Users automatisch Scripte ausgeführt welche den Rest aufräumen.
Mehr dazu findet man in folgender Anleitung:
Exchange - Nutzung der Cmdlet Extension Agents (Scripte automatisch bei Ereignissen ausführen lassen, ab Exchange 2010)
Nachtrag: Hier mal noch etwas Code zum Löschen eines User-Accounts und seiner Bestandteile:
Benutzung:
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
mit einem fertigen Script wie es Dani zu haben scheint kann ich gerade nicht aufwarten, aber wenn es nur darum geht das Verzeichnis mit den Usern im AD abzugleichen und die unzugeordneten Ordner ausfindig zu machen und zu löschen kann ich hiermit als Grundlage dienen:
# Root-Ordner in dem die Userordner liegen
$userroot = '\\server\h$'
# alle User aus dem AD lesen
$userdirs = get-aduser -Filter * | select -Expand SamAccountName
# Unterordner einlesen
$fsdirs = gci $userroot | ?{$_.PSIsContainer} | select -Expand Name
# Vergleich durchführen und nur unzugeordnete Ordner verarbeiten
compare $userdirs $fsdirs | ?{$_.Sideindicator -eq "=>"} | %{
$folder = $userroot + "\" + $_.InputObject
write-host "Ordner '$folder' ist keinem Benutzer zugeordnet."
remove-item $folder -Recurse -Force -Confirm:$true
}
In Zeile 7 ist das Löschen im Moment mit einer Abfrage versehen -Confirm:$true, möchte man das nicht, legt man es hier auf $false.
Grüße Uwe
p.s. Man kann solche Aufräum-Scripte auch mit den CMDLet-Extension-Agents koppeln, dann werden beim einfachen Löschen eines Users automatisch Scripte ausgeführt welche den Rest aufräumen.
Mehr dazu findet man in folgender Anleitung:
Exchange - Nutzung der Cmdlet Extension Agents (Scripte automatisch bei Ereignissen ausführen lassen, ab Exchange 2010)
Nachtrag: Hier mal noch etwas Code zum Löschen eines User-Accounts und seiner Bestandteile:
function cleanup-user{
param(
[string[]]$username
)
begin{
# load required modules
# For Exchange 2013
Add-PSSnapin Microsoft.Exchange.Management.Powershell.Snapin -EA Stop
# For Exchange 2010
# Add-PSSnapin Microsoft.Exchange.Management.Powershell.E2010 -EA Stop
Import-Module ActiveDirectory -EA Stop
}
process{
$username | %{
# get AD user object
$userobj = get-aduser $_ -Properties memberof, homedirectory -EA SilentlyContinue
if ($userobj){
write-host " --> Cleaning up User '$_' ..." -ForegroundColor Green
write-host "Removing user from Groups..."
# remove users from all their group-membership
$userobj | %{$_.memberof | %{Remove-ADGroupMember $_ -Members $userobj.SamAccountName -Confirm:$false}}
write-host "Removing Homedirectory-Data ..."
# remove HomeDirectory of user in
if ((Test-Path $userobj.HomeDirectory)){remove-item $userobj.HomeDirectory -recurse -force}
write-host "Removing Mailbox ..."
# remove users Exchange mailbox and AD-Account
Disable-Mailbox $userobj.SamAccountName -Confirm:$false -EA SilentlyContinue
write-host "Removing AD-Account ..."
# remove AD-Account
remove-aduser $userobj -Confirm:$false
}
}
}
end{}
}
cleanup-user -username "maxmuster","annamusterfrau"
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Danke Colinardo für das Skript, funktioniert wunderbar! Ich versuche gerade das obere für die Profilordner anzupassen, scheitere aber daran, dass die Profile .V2 als Endung haben. Wenn ich + ".V2" ausführe wird dies nur beim letzten User in der AD-Abfrage angehängt, nicht aber bei allen anderen, was natürlich dazu führt, dass alle Profil gelöscht werden. Kann mir jemand einen Tipp geben, wie ich vorgehen muss, damit alle Elemente mit der Endung ergänzt werden?
LG Martin
LG Martin
Ach sorry, Frage zu schnell überflogen...
Kannst du hiermit abfackeln:
Kannst du hiermit abfackeln:
# Root-Ordner in dem die Userordner liegen
$userroot = '\\server\h$'
# alle User aus dem AD lesen
$users = get-aduser -Filter * | select -Expand SamAccountName
gci $userroot | ?{$_.PSIsContainer -and ($_.Name -replace '\.(V2|V5)$','') -notin $users} | remove-item -Recurse -Force -Confirm:$true