Benutzer mit den meisten Antworten
Abgleich von Ad User zu Home und Prof Verzeichnissen

Frage
-
Hallo Leute,
wieder einmal hab ich Ideen im Kopf und bekomme diese nicht umgesetzt.
Ich würde gerne ein Aufräumscript schreiben. Dieses soll im Ordner Profile und Home (Aufbau sieht so aus dass darunter jeder User einen eigenen Ordner hat) einen Abgleich mit AD Konten machen. Wenn es das AD Konto nicht mehr gibt soll der Profile und Home Ordner des nicht mehr existierenden Users gelöscht werden. Am besten alles mit Logfiles zur Nachvollziehbarkeit.
Ich bitte euch um Hilfe.
Danke im Vorraus Gruß Stefan
Antworten
-
Moin,
hier auf die Schnelle die grundlegende Logik:
$home_root = "\\FILER\Home$" $prof_root = "\\FILER\Prof$"
$to_del = @() # Home ist wirklich easy foreach ($fld in (Get-ChildItem $home_root -Directory)) { $fld_name = $fld.Name if (!(Get-ADUser -LDAPFilter "(homeDirectory=*\$fld_name)")) { Write-Host "Löschkandidat: $($fld.FullName)"
$to_del += $fld.FullName } } # Beim Profilpfad müssen wir etwas tricksen, denn es kann .v2 oder .v3 angehängt werden... foreach ($fld in (Get-ChildItem $prof_root -Directory)) { $fld_name = $fld.Name if (($fld_name -like "*.v2") -or ($fld_name -like "*.v3")) { $fld_name = $fld_name.Substring(0, $fld_name.Length-3) } if (!(Get-ADUser -LDAPFilter "(profilePath=*\$fld_name)")) { Write-Host "Löschkandidat: $($fld.FullName)"
$to_del += $fld.FullName } }
$to_del | Out-File "$PSScriptRoot\loeschkandidaten.txt"
Freilich sind einige Fälle nicht behandelt (z.B. mehrere Filer, auf denen die Freigaben wohnen), aber das sollte Dich in die richtige Richtung schubsen.
Das eigentliche Löschen geht natülch auch im Skript, ich würde aber die Ausgabedatei zunächst sichten, durchsieben und anschließend mit einem weiteren Skript löschen...
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Freitag, 24. Juni 2016 12:12
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 27. Juni 2016 13:29
Alle Antworten
-
Moin, Hier gibt es ein paar Sachverhalte, die Du beachten musst aber m.E. maschinell nicht erheben kannst: 1. Folder Redirection kann einen Pseudo-Homefolder erzeugen, ohne dass er als solcher zugewiesen ist, und 2. Roaming Profiles können per GPO konfiguriert sein. Alles andere ist einfach und wird gewiss bald gepostet werden :-)
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
-
Moin,
hier auf die Schnelle die grundlegende Logik:
$home_root = "\\FILER\Home$" $prof_root = "\\FILER\Prof$"
$to_del = @() # Home ist wirklich easy foreach ($fld in (Get-ChildItem $home_root -Directory)) { $fld_name = $fld.Name if (!(Get-ADUser -LDAPFilter "(homeDirectory=*\$fld_name)")) { Write-Host "Löschkandidat: $($fld.FullName)"
$to_del += $fld.FullName } } # Beim Profilpfad müssen wir etwas tricksen, denn es kann .v2 oder .v3 angehängt werden... foreach ($fld in (Get-ChildItem $prof_root -Directory)) { $fld_name = $fld.Name if (($fld_name -like "*.v2") -or ($fld_name -like "*.v3")) { $fld_name = $fld_name.Substring(0, $fld_name.Length-3) } if (!(Get-ADUser -LDAPFilter "(profilePath=*\$fld_name)")) { Write-Host "Löschkandidat: $($fld.FullName)"
$to_del += $fld.FullName } }
$to_del | Out-File "$PSScriptRoot\loeschkandidaten.txt"
Freilich sind einige Fälle nicht behandelt (z.B. mehrere Filer, auf denen die Freigaben wohnen), aber das sollte Dich in die richtige Richtung schubsen.
Das eigentliche Löschen geht natülch auch im Skript, ich würde aber die Ausgabedatei zunächst sichten, durchsieben und anschließend mit einem weiteren Skript löschen...
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Freitag, 24. Juni 2016 12:12
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 27. Juni 2016 13:29
-
Moin
Ein grundsätzlicher Hinweis:
Wenn Nutzerkonten im AD gelöscht werden, besteht die Gefahr, das es "heimatlose" Dateien etc gibt und es unter Umständen Probleme mit Datenbanken etc. gibt:
Nachdem ein Benutzerkonto gelöscht wurde, werden alle diesem Benutzerkonto zugeordneten Berechtigungen und Mitgliedschaften endgültig gelöscht. Da die Sicherheits-ID (Security Identifier, SID) für jedes Konto eindeutig ist, werden die Berechtigungen und Mitgliedschaften des zuvor gelöschten Kontos von einem neuen Benutzerkonto mit demselben Namen wie das zuvor gelöschte Benutzerkonto nicht automatisch übernommen.
Empfehlung daher: "ungenutzte Nutzerkonten im AD nur deaktivieren, aber nicht löschen