activedirectory:homepfadeangleichen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
activedirectory:homepfadeangleichen [2015/03/23 09:43] – angelegt ronny | activedirectory:homepfadeangleichen [2015/06/17 13:10] – ronny | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Home-Pfade angleichen ====== | ====== Home-Pfade angleichen ====== | ||
+ | |||
+ | ===== Ausgangssituation ===== | ||
+ | Die Home-Verzeichnisse der drei Benutzer wurden bisher in drei Varianten in der AD angelegt: | ||
+ | |||
+ | - \\Servername\Freigabename1\Verzeichnisname | ||
+ | - \\Servername\Freigabename2\Verzeichnisname | ||
+ | - \\Servername\Verzeichnisname$ | ||
+ | |||
+ | Da die Homeverzeichnisse auf ein neues DFS mit dem Pfad " | ||
+ | |||
+ | ===== Script ===== | ||
<code Powershell|Script> | <code Powershell|Script> | ||
- | $users = get-aduser | + | #Lege Alle Benutzer mit ihren derzeitigen Pfaden in ein Array $Users ab: |
- | $RemoteShares = Get-WMIObject win32_share -ComputerName "erz-fs" | + | $Users |
- | foreach | + | |
+ | #Rufe alle Freigabenamen auf dem Server ab | ||
+ | $RemoteShares = Get-WMIObject win32_share -ComputerName "Servername" | ||
+ | |||
+ | ForEach | ||
{ | { | ||
- | $path = $user.homeDirectory.Split(' | + | |
- | $itemcount | + | #Bei dem Freigabepfad ' |
- | $itemcount | + | #$Path[0] = "" |
- | $share = $path[3] | + | #$Path[1] = "" |
- | if ($share -eq "homes$" -or $share -eq "user-daten") | + | #$Path[2] = " |
+ | #$Path[3] = " | ||
+ | #$Path[4] = " | ||
+ | $Path = $User.homeDirectory.Split(' | ||
+ | | ||
+ | #Speichere die Anzahl der Elemente von $Path in $ItemCount und reduzieren $Itemcount um 1 | ||
+ | $ItemCount | ||
+ | $ItemCount | ||
+ | |||
+ | #Besorge die den Freigabenamen und lege ihn in $Share ab | ||
+ | $Share = $path[3] | ||
+ | |||
+ | #Wenn $Share = " | ||
+ | if ($Share -eq "Freigabe1" -or $Share -eq "Freigabe2") | ||
{ | { | ||
- | $newHomeDirectoryPath | + | |
+ | $newHomeDirectoryPath = "\\Domäne\Userdata\" + $Path[$ItemCount] | ||
} else | } 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 = "" | $newHomeDirectoryPath = "" | ||
+ | | ||
+ | #Durchsuche alle Freigabeverzeichnisse von " | ||
$Share = $RemoteShares | Where-Object {$_.Name -eq $path[3]} | $Share = $RemoteShares | Where-Object {$_.Name -eq $path[3]} | ||
+ | | ||
+ | #Wenn wirklich ein Share gefunden wurde, fahre mit TRUE fort: | ||
if ($Share -ne $NULL) | if ($Share -ne $NULL) | ||
{ | { | ||
- | $path = $Share.Path.Split(' | + | $Path = $Share.Path.Split(' |
- | $itemcount | + | $ItemCount |
- | $itemcount | + | $ItemCount |
- | $newHomeDirectoryPath = "\\evag.evg.int\UserData\Home\" + $path[$itemcount] | + | $newHomeDirectoryPath = "\\Domäne\Userdata\" + $Path[$ItemCount] |
} | } | ||
} | } | ||
- | $newHomeDirectoryPath | + | |
+ | Set-ADUser -Identity $User -HomeDirectory | ||
} | } | ||
</ | </ | ||
+ | {{tag> |
activedirectory/homepfadeangleichen.txt · Zuletzt geändert: 2016/04/02 00:48 von 127.0.0.1