function Fix-RsmDcom { Param($ServerName = 'blank') If ($ServerName -eq 'blank') { $ServerName = Read-Host "ServerName" } $Hive = 'LocalMachine' $AppIDKeyName = "Software\Classes\AppID" $AppIDSubKey = "{D61A27C1-8F53-11D0-BFA0-00A024151983}" $CLSIDKeyName = "Software\Classes\CLSID" $CLSIDSubKey = "{D61A27C6-8F53-11D0-BFA0-00A024151983}" $Writable = $true Write-Host "Processing Server $Servername" $Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::$Hive, $ServerName) If ($Registry) { $AppID = $Registry.OpenSubKey($AppIDKeyName, $Writable) If ($AppID) { If ($AppID.GetSubKeyNames() -contains $AppIDSubKey) { Write-Host "`tRemoving AppID subkey" $AppID.DeleteSubKey($AppIDSubKey) } Else { Write-Warning "AppID SubKey not found on $ServerName" } } Else { Write-Warning "Failed to open AppID subkey on $ServerName" } $CLSID = $Registry.OpenSubKey($CLSIDKeyName, $Writable) If ($CLSID) { If ($CLSID.GetSubKeyNames() -contains $CLSIDSubKey) { Write-Host "`tRemoving CSLID subkey tree" $CLSID.DeleteSubKeyTree($CLSIDSubKey) } Else { Write-Warning "CLSID SubKey not found on $ServerName" } } Else { Write-Warning "Failed to open CLSID subkey on $ServerName" } } Else { Write-Warning "Failed to connect to registry on $ServerName" } }