Remotedesktopdienste-Profil mit Powershell ändern

August 27, 2017 in windows ‐ 2 min read

In einer Windows Active Directory Domänenumgebung gibt es zusätzlich zu Serverseitig gespeicherten Profilen die Möglichkeit Usern ein separates Profil zu gehen.

Dieses Profil nennt sich Remotedesktopdienste-Profil und wird nur dann geladen, wenn der User auf einem Terminalserver arbeitet.

So muss man nur ein AD Konto pro User pflegen und der User kann sich trotzdem ein, auf das Arbeiten auf dem Terminalserver zugeschnittenes, Profil personalisieren ohne sich zwei Passwörter merken zu müssen. (!)

Wenn man dieses Profil in einer bestehenden Umgebung ausrollen will, kann das abhänging von der Anzahl der User viel (ermüdende) Arbeit bedeuten. Es bietet sich also an das ganze über ein Powershell Script zu erledigen.

Leider lässt sich der Profilpfad nicht gemütlich über Get-Aduser und Set-Aduser in der Powershell setzen.

Powershell Fu

Wir definieren eine Variable $user und geben mit [ADSI]“LDAP://“ den Kanonischen Namen des users an. In meinem Beispiel zeige ich auf das Benutzerkonto tstest in der OU SBSUsers.

$user = [ADSI]“LDAP://CN=tstest,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=xxx,DC=local

Wenn ihr den nicht von Hand über den ADSI Editor auslesen wollt, könnt ihr ihn folgendermaßen mit der Powershell auslesen.

$findme = get-aduser -Identity tstest

Alternativ könntet ihr jetzt auch folgendes schrieben:

$findme = Get-ADUser -Filter {(Name -Like “tstest*”)}

Nun speichern wir den Kanonischen Namen des users:

$usersCN = ($findme.DistinguishedName)

Hieraus bilden wir nun die Variable $user, welche den distinguishedName und den Path enthält:

$user = [ADSI]“LDAP://$usersCN

image

Den Wert “terminalservicesprofilepath” des users tstest (in der Variable $user) können wir nun mit $user.psbase.Invokeset(“Variable”,“NeuerWert”) anpassen.

$user.psbase.Invokeset(”terminalservicesprofilepath","\\server\freigabe")

Final müssen wir jetzt die Änderungen noch anwenden:

$user.setinfo()

 

image

 

Nachfolgend ein Beispiel, wie das in einem PowerShell Script umgesetzt werden kann.

 

Vielen Dank fürs Lesen, Ori