none
Abgleich von Ad User zu Home und Prof Verzeichnissen RRS feed

  • 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

    Mittwoch, 22. Juni 2016 13:33

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.com

    In theory, there is no difference between theory and practice. In practice, there is.

    Mittwoch, 22. Juni 2016 18:19

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.com

    In theory, there is no difference between theory and practice. In practice, there is.

    Mittwoch, 22. Juni 2016 14:50
  • 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.com

    In theory, there is no difference between theory and practice. In practice, there is.

    Mittwoch, 22. Juni 2016 18:19
  • 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

    Donnerstag, 23. Juni 2016 09:11