I created this script because of moving the profiles to a server in the data center were also the terminal server is located.
Powershell needs to be runned as Administrator
########
## created by Daag van der Meer
## blog.van-daag.nl
## 26-04-2018
########
#
# Script is used to set Homedrive, RDP Homedrive, Profilepath, RDP profile path.
#
# Script needs to be runned as Admin!!!
Import-Module ActiveDirectory
# On the Domain Controller There is on C:\Temp\Users.txt with the usernames to change the path
foreach ($user in (get-content c:\temp\Users.txt)) {
## Homedrive and profile location
$homeDirectory = '\\<NewServer>\home$\<Country>\' + $user;
$ProfilePath = '\\<NewServer>\Profile$\<Country>\' + $user;
## Set homedrive (DISABLE THIS IF YOU DON'T WANT TO CHANGE THIS)
# Finally set their home directory and home drive letter in Active Directory
Set-ADUser -Identity $user -HomeDirectory $homeDirectory -HomeDrive H
## Set Profile (DISABLE THIS IF YOU DON'T WANT TO CHANGE THIS)
Set-ADUser -Identity $user -ProfilePath $ProfilePath
## Set RDP Profile and Homedrive
Get-ADUser -Filter "SAMAccountName -like '$user*'"| ForEach-Object {
$ADSI = [ADSI]('LDAP://{0}' -f $_.DistinguishedName)
try {
$ADSI.InvokeSet('TerminalServicesProfilePath',$ProfilePath)
$ADSI.InvokeSet("TerminalServicesHomeDrive","H:")
$ADSI.InvokeSet("TerminalServicesHomeDirectory",$homeDirectory)
$ADSI.SetInfo()
}
catch {
Write-Error $Error[0]
}
}
}