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-Key: 4010060275

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

Printed on: September 28, 2023 at 06:09 o'clock

Member: Hubert.N
Hubert.N Sep 21, 2022 at 14:01:44 (UTC)
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ß
Mitglied: 3803037559
Solution 3803037559 Sep 21, 2022 updated at 14:08:23 (UTC)
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
Member: ukulele-7
ukulele-7 Sep 21, 2022 at 14:15:42 (UTC)
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.
Member: ukulele-7
ukulele-7 Sep 21, 2022 at 14:20:07 (UTC)
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...
Mitglied: 3803037559
3803037559 Sep 21, 2022 updated at 14:54:23 (UTC)
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}  
Member: Dani
Dani Sep 21, 2022 at 19:38:42 (UTC)
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
Member: DerWoWusste
Solution DerWoWusste Sep 21, 2022 at 20:13:40 (UTC)
Goto Top
Du kannst einen geplanten Task einrichten, der getriggert wird von jedem Nutzerlogon und dieses Kommando ausführt.
Member: SlainteMhath
Solution SlainteMhath Sep 22, 2022 at 06:31:23 (UTC)
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
Member: ukulele-7
ukulele-7 Sep 22, 2022 at 07:03:47 (UTC)
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.
Member: ukulele-7
ukulele-7 Sep 22, 2022 at 07:04:57 (UTC)
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?
Member: SlainteMhath
SlainteMhath Sep 22, 2022 at 07:08:34 (UTC)
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.
Member: Dani
Dani Sep 22, 2022 at 08:41:52 (UTC)
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
Member: SlainteMhath
SlainteMhath Sep 22, 2022 at 09:27:32 (UTC)
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.
Member: ukulele-7
ukulele-7 Sep 22, 2022 at 10:36:08 (UTC)
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
Member: ukulele-7
ukulele-7 Sep 22, 2022 updated at 12:47:04 (UTC)
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.