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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 181806
Url: https://administrator.de/forum/powershell-profilpfad-eines-benutzers-aendern-jenachdem-mit-welchem-client-er-sich-anmeldet-181806.html
Ausgedruckt am: 01.05.2025 um 18:05 Uhr
8 Kommentare
Neuester Kommentar
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.ä.?
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.ä.?
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.
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.
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.
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.