ottdomi
Goto Top

Powershell - Profilpfad eines Benutzers ändern, jenachdem mit welchem Client er sich anmeldet

Das Problem ist folgendermassen. Ein Benutzer soll sich mit einem Login auf mehere Systeme anmelden können. Ein Client mit Windows XP und zwei mit Windows 7.
Um das Problem zu lösen habe ich ein Powershellskript geschrieben, der überprüft mit welchem Client sich der User anmeldet und soll anschliessend den Profilpfad dementsprechend abändern.
Das Powershell Skript ist soweit bereit bis auf das ändern des User Profil Pfades. Ist das erstens so möglich wie ich mir das vorstellle und wie kann ich den Profilpfad am besten abändern bzw. mit welchem Powershell befehl.

Anbei der Stand meines Powershellskript

Import-Module activedirectory


IF ($env:computername -ccontains "clientnameX")
{$ppValue = "Pfad1\"+$env:username;
}

IF ($env:computername -ccontains "clientnameY")
{$ppValue = "Pfad2\"+$env:username;
}

Write-Output ("Sie melden sich gerade am Computer " +$env:computername +" an")
Write-Output ("Ihr Profil wird unter "+$ppValue +" gespeichert")

get-aduser $env:username -properties * (hier sollte die Anpassung vorgenommen werden, habe mal die Eigenschaften anzeigen lassen)

Ich suche weiter nach einem Befehl und wäre für Tipps eurer Seits sehr dankbar.

Freundliche Grüsse

Ottdomi

Content-Key: 181806

Url: https://administrator.de/contentid/181806

Printed on: April 26, 2024 at 08:04 o'clock

Member: emeriks
emeriks Mar 12, 2012 at 14:17:03 (UTC)
Goto Top
Welchen Sinn soll denn das Ganze haben? Und redest Du vom lokalen Profilordner oder von dem auf dem Server (Roamingprofile)?

Meines Wissens kann man nicht zur Laufzeit den Profilpfad einfach so mal switchen. Wenn das Skript als Loginscript gedacht ist, dann läuft das ja im Benutzerkontext. Und einj "normaler" Benutzer hat ganz sicher nicht die Rechte, auf dem Client einzustellen, wo dieser da Profil ablegt.

Oder meinst Du gar etwas ganz anderes, z.B. Homedirectory o.ä.?
Member: Ottdomi
Ottdomi Mar 12, 2012 at 14:33:57 (UTC)
Goto Top
Unsere Entwickler arbeiten auf mehreren Systemen.

Einmal auf einer lokalen Arbeitsstation (Windows 7). Da soll es ein lokales Profil sein, da wir bei einem Problem das Standard Image drauf spielen und nicht wollen, das das alte Profil Probleme verursacht. Somit wird ein neues Profil erstellt.
Zusätzlich hat der Entwickler über XenDesktop zwei weitere Arbeitsstationen mit Windows XP und Windows 7, die auf einem ESXi Hostserver betrieben werden. Hier müssten die Profile auf dem Server gespeichert werden. Der Ablage Ort würden wir gerne getrennt haben.

Wir wollen nicht, dass sich diese Profile miteinander vermischen. Das Ganze soll getrennt werden.
Member: emeriks
emeriks Mar 12, 2012 at 16:14:17 (UTC)
Goto Top
Ach so ...
Jo, dann schlage ich einfache Aliase vor. Im Userobjekt trägst Du z.B. ein \\serveralias\profiles$. Auf den Clients sorgst Du dann aber Einträge in den lokalen HOSTS Dateien dafür, dass verschiedene Clients diesen Alias verschieden auflösen. z.B. der physische Client auf die IP des Server1 und die virtuellen auf die IP des Server2. Dann auf beiden Servern die Freigabe "profiles$" (mein Beispiel) erstellen und fertig.

Bei den Servern muss Du nur noch dafür sorgen, dass der Freigabedienst auch auf Aliase reagiert. Also unter HKLM\.....\Services\LanmanServer\Parameters den DWORD-Parameter "DisableStrictNameChecking" auf 1 setzen und den Serverdienst durchstarten.
Member: Ottdomi
Ottdomi Mar 13, 2012 at 06:43:16 (UTC)
Goto Top
Hmm... danke für den Tipp... aber was wenn ich die Profile auf einem Fileserver haben möchte?

Nochmals zu diesem Skript das isch geschrieben habe, könnte ich dies nicht trotzdem mal versuchen und schauen ob ich dies mit dem Skript machen kann?
Ich bräuchte einfach nur den Befehl, der den Profilpfad ändert.
Member: emeriks
emeriks Mar 13, 2012 at 07:53:08 (UTC)
Goto Top
Nein, ich bin fest überzeugt, dass das nicht geht. Das ist eine Frage der Logik. Der Profilpfad wird vom Computer (NT-AUTHORITÄT\SYSTEM) bestimmt und erstellt. Und zwar noch bevor "der Login-Prozess an den User übergegeben" wird. Loginscripte des Users laufen also erst dann, wenn bzgl. der Profilpfaderstellung alle Messen bereits gelesen sind.

Weiterhin: "Profilpfad eines Benutzers ändern, jenachdem mit welchem Client er sich anmeldet"
1. Man meldet sich nicht mit einem Client an, sondern an/auf einem Client. Das ist ein Unterschied! Die Clientanmeldung passiert allein dadurch, dass der Client hochgefahren wird, die Domäne sucht und findet und sich dann dort automatisch anmeldet. Dann bereits zieht der Client seine eigenen Richtlinien (die für ihn bestimmten).
2. Wenn es also an jedem Client anders sein soll (bzw. an bestimmten Clienttypen), dann ist das doch nur genau eine Vorgabe je Client, die auch nur genau einmal je Client gemacht werden muss. Für Terminalserver gibt es da eine spezielle Richtlinie. Hier kann man via GPO per Terminalserver den Pfad des Roamingprofiles festlegen. Für Nicht-TS-Anmeldungen ist mir sowas nicht bekannt.
Member: Ottdomi
Ottdomi Mar 13, 2012 at 08:16:51 (UTC)
Goto Top
Okay... und das mit den Aliasen das du mir vorgeschlagen hast, würde nur gehen wenn ich die Profile auf mindestens zwei verschiedenen Servern speichern würde? So wie ich das verstanden habe...
Member: emeriks
emeriks Mar 13, 2012 at 08:19:53 (UTC)
Goto Top
Ja, weil der Alias sich ja auf den Computernamen bezieht und nicht auf die Freigabe.
Member: Ottdomi
Ottdomi Mar 13, 2012 at 08:29:03 (UTC)
Goto Top
Vielen Dank für deine Hilfe. Ich werde deine Lösung in Betracht ziehen, aber suche trotzdem kurz weiter. Vielleicht finde ich ja noch eine Lösung ;)

GPO ist ein gutes Stichwort.. vielleicht finde ich da ja was ^^

EDIT: Lösung

Hier der Link mit der Lösung über die GPO

http://www.grouppolicy.biz/2010/03/setting-of-the-week-19-set-roaming-p ...

- Userprofile für Windows XP in den Eigenschaften des User in der AD manuell eingetragen (da die GPO nur ab Vista funktioniert)
- Die beiden Profile für W7 habe ich über GPO entweder deaktiviert oder in der GPO den Pofilpfad eingegeben

Für die vererbung habe ich verschiedene OUs erstellt.