Remotedesktopdienste-Profil und Basisordner mit Powershell setzen

Ein PowerShell Script Auszug um die Basisordner und das Remotedesktopdienste-Profil automatisiert zu setzen.

Da man beim Anlegen (New-ADUser) oder Bearbeiten (Set-ADUser) von Benutzern mit der Powershell leider nicht die Attribute für das Remotedesktopdienste-Profil und Basisordner beschreiben kann, hier einmal der „Umweg“ mit Powershell direkt über ADSI.

Import-Module ActiveDirectory
 
$SERVER = '<Name_des_Profilserver>'
$DOMAIN = (Get-ADDomain).DistinguishedName
 
$OU = 'OU=Benutzer,OU=derTest,' + $DOMAIN
Get-ADUser -Filter * -SearchBase $OU | ForEach-Object {
    $PROFILEPATH = '\\' + $SERVER + '\RDSKonfig\Profiles\' + $_.SamAccountName
    $USERDIRPATH = '\\' + $SERVER + '\RDSKonfig\Userdirs\' + $_.SamAccountName
    $ADSI = [ADSI]('LDAP://{0}' -f $_.DistinguishedName)
    try {
        $ADSI.InvokeSet('TerminalServicesProfilePath',$PROFILEPATH)
        $ADSI.InvokeSet('TerminalServicesHomeDrive','W:')
        $ADSI.InvokeSet('TerminalServicesHomeDirectory',$USERDIRPATH)
        $ADSI.SetInfo()
    }
     catch {
        Write-Error $Error[0]
    }
}

Im Script wird die angegebene OU nach Benutzerobjekten durchsucht und jedem Objekt der Profilpfad (\\<SERVER>\RDSKonfig\Profiles\<Anmeldename>) sowie das Laufwerk (W:) und der Basisordner (\\<SERVER>\RDSKonfig\UserDirs\<Anmeldename>) hinzugefügt.

Terminaldienste Profile Basisordner
Terminaldienste Profile Basisordner

Eine Alternative zum Bearbeiten des Benutzerobjekt mit ADSI wäre die Verwendung der kostenlosen Quest PowerShell Commands for Active Directory.

Neben der PowerShell könnte man an dieser Stelle natürlich auch auf die guten alten Gruppenrichtlinien Objekte verweisen:

Und nun getreu dem Motto „Ich bin nicht dumm, ich kann das Spiel auch andersrum“, hier das passende Snippet, um nach einer Umstellung auf bspw. FSLogix die Remotedesktopdienste-Benutzerprofilpfade wieder zu leeren:

$Domain = (Get-ADDomain).DistinguishedName
$OU = 'OU=Benutzer,OU=derTest,' + $Domain
$Users = Get-ADUser -Filter * `
    -SearchBase $OU
foreach($u in $Users){
    $curUser = [ADSI] "LDAP://$($u.DistinguishedName)"
    $curUser.psbase.InvokeSet('TerminalServicesProfilePath',"")
    $curUser.psbase.InvokeSet('TerminalServicesHomeDirectory',"")
    $curUser.SetInfo()
}

Die gesuchte Lösung noch nicht gefunden oder benötigen Sie Hilfe bei anderen Themen aus meinem Blog? Nehmen Sie gerne Kontakt mit mir bzw. meinem Unternehmen Jan Mischo IT auf. Ich freue mich auf Ihre Anfrage: https://janmischo.it/kontakt/


+49 2801 7004300

info@janmischo.it


Beitrag veröffentlicht

in

, , ,

von

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.