ukulele-7
Goto Top

Bei Benutzeranmeldung Registry-Wert in HKLM setzen

Hallo zusammen,

wir nutzen FSLogix auf Terminal Servern. Wenn ein Benutzer erstmalig angemeldet wird entsteht ein Roaming Profile + eine FSLogix VHDX Profile Disk. Damit das Roaming Profile nicht mehr synchronisiert muss das Profil einmalig auf "local" gesetzt werden, den Rest macht FSLogix. Das versuche ich irgendwie zu automatisieren, da es bald eine Migration mit mehreren neuen Profilen für alle geben wird.

Ich habe einen Registry-Schlüssel ausgemacht der genau das bewirkt was ich möchte:
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ <SID> \ Preferences
UserPreferences REG_DWORD = 0

Solange der Benutzer auf dem RD-SH angemeldet ist, steht hier die Benutzer SID unter HKLM, bei Abmeldung wird die User Registry unmounted und auch der Schlüssel unter HKLM entfällt. Im Benutzer-Kontext dürfte es relativ leicht sein die SID auszulesen, irgendwie etwa so:
wmic useraccount where name="%USERNAME%" get sid

Aber der Benutzer-Kontext darf natürlich keinen Registry Wert in HKLM setzen. Als Administrator darf ich nach HKLM schreiben und den Wert erstellen, kenne aber nicht die SIDs aller angemeldeten, echten Benutzer (kein Administrator, keine Dienst-Accounts, etc.). Außerdem müsste ich als Administrator dann mehrere Registry-Schlüssel setzen, also irgend eine Schleife bauen.

Ich bin leider nicht sonderlich gut mit CMD und Powershell. Außerdem überlege ich natürlich ob ich hier den richten Weg gehe oder vielleicht gibt es eine viel elegantere Methode, z.B. einen Task der bei Benutzeranmeldung getriggert wird und der auch die SID kennt?

Content-ID: 4010060275

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

Ausgedruckt am: 18.12.2024 um 22:12 Uhr

Hubert.N
Hubert.N 21.09.2022 um 16:01:44 Uhr
Goto Top
Hallo

Was ich mich erst einmal frage Ich setze FSLogix ein um keine Roaming Profiles zu nutzen zu müssen. Wieso machst Du das überhaupt?

Gruß
3803037559
Lösung 3803037559 21.09.2022 aktualisiert um 16:08:23 Uhr
Goto Top
Als PS-Startskript/elevated bspw.
Get-ChildItem "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\*\Preferences" | %{Set-ItemProperty $_.PSPath -Name UserPreferences -Value 0 -Force}  
Cheers
certguy
ukulele-7
ukulele-7 21.09.2022 um 16:15:42 Uhr
Goto Top
Zitat von @Hubert.N:

Was ich mich erst einmal frage Ich setze FSLogix ein um keine Roaming Profiles zu nutzen zu müssen. Wieso machst Du das überhaupt?
Also ich habe ein paar User die melden sich lokal an und dann nochmal am Terminal Server. Lokal ist das ein Roaming Profile mit wenig Inhalt, im AD Benutzer ist dafür aber ein Profilpfad hinterlegt.

Ich habe noch keinen Weg gefunden zu verhindern das das Profil auf dem RD-SH dann auch beim ersten mal ein Roaming Profile wird. Bisher muss ich das dann umstellen und die Einstellung local damit in der Profile Disk hinterlegen. Danach klappt alles, auf lokalem Client ist das Profil roaming, auf RD-SH ist es local und damit FSLogix only.
ukulele-7
ukulele-7 21.09.2022 um 16:20:07 Uhr
Goto Top
Zitat von @3803037559:

Als PS-Startskript bspw.
Get-ChildItem "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\*\Preferences" | %{Set-ItemProperty $_.PSPath -Name UserPreferences -Value 0 -Force}  
Das sieht nicht schlecht aus aber wenn ich das richtig sehe sind alle Anmeldungen betroffen, ich müsste aber den Administrator und eigentlich auch einige User ausschließen. Eigentlich alle die nicht in der OU für normale User sind.

Außerdem müsste ich den Wert dann mehrmals am Tag setzen damit ich alle erwische. Geht natürlich...
3803037559
3803037559 21.09.2022 aktualisiert um 16:54:23 Uhr
Goto Top
Zitat von @ukulele-7:
Das sieht nicht schlecht aus aber wenn ich das richtig sehe sind alle Anmeldungen betroffen, ich müsste aber den Administrator und eigentlich auch einige User ausschließen. Eigentlich alle die nicht in der OU für normale User sind.
Kannst du ja ausfiltern.
Bsp. hier für User aus dem "Users"-Container der Domain
$include = [adsisearcher]::new("LDAP://CN=Users,$(([adsi]'LDAP://rootDSE').defaultNamingContext)",'(ObjectClass=User)','objectSID').FindAll() | %{[System.Security.Principal.SecurityIdentifier]::new($_.Properties['objectSID'],0).Value}  
Get-ChildItem "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\*\Preferences" | ?{$_.PSParentPath.split("\")[-1] -in $include} | %{Set-ItemProperty $_.PSPath -Name UserPreferences -Value 1 -Force}  
Dani
Dani 21.09.2022 um 21:38:42 Uhr
Goto Top
Moin,
Wenn ein Benutzer erstmalig angemeldet wird entsteht ein Roaming Profile + eine FSLogix VHDX Profile Disk.
Ist in den Benutzereigenschaften im Active Directory im Reiter "Terminaldienste" ein Pfad eingetragen? Denn dann würde deine Beobachtung nachvollziehbar sein.


Gruß,
Dani
DerWoWusste
Lösung DerWoWusste 21.09.2022 um 22:13:40 Uhr
Goto Top
Du kannst einen geplanten Task einrichten, der getriggert wird von jedem Nutzerlogon und dieses Kommando ausführt.
SlainteMhath
Lösung SlainteMhath 22.09.2022 um 08:31:23 Uhr
Goto Top
Moin,

ich habe noch keinen Weg gefunden zu verhindern das das Profil auf dem RD-SH dann auch beim ersten mal ein Roaming Profile wird.
GPO mit aktivierter Loopback Verarbeitung in der OU einhängen in der die RD Server sind. Und dort dann das laden vom Roaming Profiles verbieten. Fertig

lg,
Slainte
ukulele-7
ukulele-7 22.09.2022 um 09:03:47 Uhr
Goto Top
Zitat von @Dani:
Wenn ein Benutzer erstmalig angemeldet wird entsteht ein Roaming Profile + eine FSLogix VHDX Profile Disk.
Ist in den Benutzereigenschaften im Active Directory im Reiter "Terminaldienste" ein Pfad eingetragen? Denn dann würde deine Beobachtung nachvollziehbar sein.
Ja, sonst könnte ich für die lokale Anmeldung kein Roaming Profile setzen.
ukulele-7
ukulele-7 22.09.2022 um 09:04:57 Uhr
Goto Top
Zitat von @SlainteMhath:

ich habe noch keinen Weg gefunden zu verhindern das das Profil auf dem RD-SH dann auch beim ersten mal ein Roaming Profile wird.
GPO mit aktivierter Loopback Verarbeitung in der OU einhängen in der die RD Server sind. Und dort dann das laden vom Roaming Profiles verbieten. Fertig
Hast du das schon mal mit FSLogix getestet?
SlainteMhath
SlainteMhath 22.09.2022 um 09:08:34 Uhr
Goto Top
Hast du das schon mal mit FSLogix getestet?
Ja, läuft hier problemlos mit FSLogix. Musst nur darauf achten as vor aktivieren der Loopback alle GPOs in der Server OU verlinkt sind.
Dani
Dani 22.09.2022 um 10:41:52 Uhr
Goto Top
Moin,
Ja, sonst könnte ich für die lokale Anmeldung kein Roaming Profile setzen.
für lokale Anmeldung (sprich an den Clients) setzt man doch den Pfad in dem Reiter "Profil" und nicht bei "Terminaldienste". Somit könntest du den Pfad bei Terminaldienste entfernen und das Problem ist gelöst.


Gruß,
Dani
SlainteMhath
SlainteMhath 22.09.2022 um 11:27:32 Uhr
Goto Top
Somit könntest du den Pfad bei Terminaldienste entfernen und das Problem ist gelöst.
Nope, dann zieht der Server das "normale" Roaming Profile.
ukulele-7
ukulele-7 22.09.2022 um 12:36:08 Uhr
Goto Top
Abgesehen davon setzte ich auch den Terminal Dienste Profilpfad (per GPO) weil ich auch Sammlungen habe an denen die User sich mit Roaming Profilen anmelden, also zumindest noch, meine User können in mehreren RD Collections aktiv sein face-smile
ukulele-7
ukulele-7 22.09.2022 aktualisiert um 14:47:04 Uhr
Goto Top
Zitat von @SlainteMhath:

ich habe noch keinen Weg gefunden zu verhindern das das Profil auf dem RD-SH dann auch beim ersten mal ein Roaming Profile wird.
GPO mit aktivierter Loopback Verarbeitung in der OU einhängen in der die RD Server sind. Und dort dann das laden vom Roaming Profiles verbieten. Fertig
Okay ich habe folgendes getestet:
  • Es gibt Computer GPOs die erfolgreich die Anmeldung per Roaming Profile verhindern, auch wenn ein Profilpfad gesetzt ist. Die Computer GPO kann erfolgreich auf den RD-SH angewandt werden und tut was sie soll, auch für komplett neue Benutzer. Alle Benutzer auf dem RD-SH sind dann automatisch local und FSLogix greift.
https://serverfault.com/questions/331467/disabling-roaming-profiles-on-a ...

Ich habe mich ein bisschen in Loopback eingelesen. Bisher habe ich darauf verzichtet und würde das auch weiterhin wollen, bei vielen GPOs und OUs ist mir das ein bisschen zu komplex. Aber von meinem Verständnis her:
  • Da es sich um eine Computer GPO handelt kann ich mit Loopback hier nichts sinnvolles tun da ich damit nur Benutzer GPOs auf Computer anwende, nicht aber umgekehrt.
  • Ich könnte allerdings den Profilpfad per "gegen" OU auf allen anderen Computern setzen und die Anmeldebeschränkungen wieder aufheben.
https://community.spiceworks.com/topic/1053833-how-can-i-disable-roaming ...

Ich mache aber auch das nicht, ich mache einfach nur eine Computer OU für die betreffenden RD-SH die eine lokale Anmeldung erzwingt. Alle User bekommen hier FSLogix, ausgenommen der Domain-Admin (der hat einfach ein lokales Profil und fertig). Das ist am besten zu überblicken und am wenigsten "invasiv".
  • Ein Script wäre auch noch denkbar und wie @DerWoWusste schrieb auch per User Logon zu triggern aber das muss man natürlich auch erstmal schreiben, debuggen, dokumentieren und anderen Administratoren deutlich machen, das da sowas werkelt.