Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

activedirectory:homepfadeangleichen

Home-Pfade angleichen

Ausgangssituation

Die Home-Verzeichnisse der drei Benutzer wurden bisher in drei Varianten in der AD angelegt:

Da die Homeverzeichnisse auf ein neues DFS mit dem Pfad "\\Domäne\Userdata\Verzeichnisname" migriert werden sollen, müssen alle Pfade gleichermaßen angepasst werden.

Script

Script

#Lege Alle Benutzer mit ihren derzeitigen Pfaden in ein Array $Users ab:
$Users = Get-ADUser -Filter {homeDirectory -like "*Servername*"} -Properties homeDirectory
 
#Rufe alle Freigabenamen auf dem Server ab
$RemoteShares = Get-WMIObject win32_share -ComputerName "Servername"
 
ForEach ($User in $Users)
{
    #Zerteile de Freigabepfad des Benutzers am \ und lege die Einzelergebnisse in ein Array $Path
    #Bei dem Freigabepfad '\\Servername\Freigabe1\Verzeichnisname' sieht das Ergebnis so aus:
    #$Path[0] = ""
    #$Path[1] = ""
    #$Path[2] = "Servername"
    #$Path[3] = "Freigabe1"
    #$Path[4] = "Verzeichnisname"
    $Path = $User.homeDirectory.Split('\')
 
    #Speichere die Anzahl der Elemente von $Path in $ItemCount und reduzieren $Itemcount um 1
    $ItemCount = $Path.Count
    $ItemCount -= 1;
 
    #Besorge die den Freigabenamen und lege ihn in $Share ab    
    $Share = $path[3]
 
    #Wenn $Share = "Freigabe1" oder gleich "Freigabe2" ist, fahre mit TRUE fort:
    if ($Share -eq "Freigabe1" -or $Share -eq "Freigabe2")
    {
        #Setze $newHomeDirectoryPath auf den neuen Pfad in "\\Domäne\Userdata\"
        $newHomeDirectoryPath = "\\Domäne\Userdata\" + $Path[$ItemCount]
    } else
    {
        #Der Else-Fall tritt nur dann auf, wenn der User bisher über eine versteckte Freigabe angesprochen wurde.
        #In diesem Fall muss die Freigabe aus den vorhandenen Freigaben rausgesucht werden, damit wir über diesen
        #Umweg an den Verzeichnisnamen kommen. Wird keine passende Freigabe gesucht, wird ein leerer String zurück-
        #gegeben, so dass bei einem folgenden Set-ADUser der ungültige Home-Pfad gelöscht würde:
 
        #Lege $newHomeDirectoryPath auf LEER:
        $newHomeDirectoryPath = ""
 
        #Durchsuche alle Freigabeverzeichnisse von "Servername" nach dem im Homepfad angegebenen
        $Share = $RemoteShares | Where-Object {$_.Name -eq $path[3]}
 
        #Wenn wirklich ein Share gefunden wurde, fahre mit TRUE fort:
        if ($Share -ne $NULL)
        {
            $Path = $Share.Path.Split('\')
            $ItemCount = $Path.Count
            $ItemCount -= 1
            $newHomeDirectoryPath = "\\Domäne\Userdata\" + $Path[$ItemCount]
        }
    }
    #Setzt den neu definierten Pfad als Homedirectory fest.
    Set-ADUser -Identity $User -HomeDirectory $newHomeDirectoryPath
}

activedirectory/homepfadeangleichen.txt · Zuletzt geändert: 2016/04/02 00:48 (Externe Bearbeitung)