Windows RDS / Temporäres Profil

Häufigster Fehler ist, dass Sitzungen in einer vorherigen Sitzung nicht ordentlich geschlossen wurden.

Um herauszufinden, welche Sitzungen geöffnet sind, hilft folgendes Script weiter: (Bitte Variablen anpassen)

$UserToFind = „a.mustermann“
$User = $env:USERDOMAIN + ‚\‘ + $UserToFind
$RDCollection = Get-RDSessionCollection | where {$_.ResourceType -eq ‚Remote Desktop‘}
$RDHosts = Get-RDSessionHost -CollectionName $RDCollection.CollectionName | select SessionHost
$Array = Invoke-Command -ComputerName $RDHosts.SessionHost -ScriptBlock { Get-Disk | select Location,DiskNumber | where {$_.Location -notmatch „Integrated“} }
foreach ($VHD in $Array){
$DiskID = (Get-Item $VHD.Location).Name.Substring(5).Split(„.“)[0]
$objSID = New-Object System.Security.Principal.SecurityIdentifier ($DiskID)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
if ($objUser.Value -eq $User){
$result = „$($objUser.Value) disk number $($VHD.DiskNumber) on $($VHD.PSComputername)“
}else{
$result = „$($User) – no active RSH sessions were found.“
}
}

$result

Dieses Skript gibt die wichtigsten Informationen zurück.

Anschließend kann die offene Sitzung geschlossen werden mit: (Natürlich mit den Variablen vom vorherigen Skript anpassen)

Invoke-Command -ComputerName $VHD.PSComputername -ScriptBlock { Dismount-VHD -DiskNumber $VHD.DiskNumber }

Danach alle Einträge des Benutzers in der Registry löschen:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.

Sowohl die Einträge mit .bak als auch die ohne! Zusätzlich muss der TEMP Ordner des Benutzers unter  C:\Users gelöscht werden.

Share