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.
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()
}
Schreibe einen Kommentar