在平日的工作里,运用 Windows 远程桌面工具(RDP)去连接各类服务器和计算机是屡见不鲜的情况。不过,鉴于安全和隐私方面的因素,我们偶尔会有删除这些连接的历史记录以及相关登录凭据的需求。在接下来的这篇文章中,我会为您呈上一份完备的 PowerShell 脚本,助力您达成此目标。
例如,假如您在一家涉及机密信息处理的公司工作,对远程桌面连接的历史和凭据进行及时清理就显得尤为重要,避免可能的信息泄露风险。再比如,对于个人用户而言,保护自己的隐私,不让他人获取到过往的连接记录,也是很有必要的。
为什么要删除远程桌面记录?
远程桌面连接的记录以及凭据,有可能会将您常用的服务器 IP 地址以及登录信息暴露出来,从而加大安全风险。当您把这些记录清除掉之后,能够更有效地保护您的隐私以及网络安全。
比如说,如果这些记录被不法分子获取,他们就可能利用这些信息入侵您的服务器或者计算机,造成严重的损失。又或者,如果您的竞争对手得到了这些信息,可能会对您的工作或业务造成不利影响。所以,及时删除远程桌面记录是非常重要的。
PowerShell 脚本:删除 RDP 历史记录和凭据
以下是一个可以同时删除远程桌面连接历史记录和登录凭据的 PowerShell 脚本:
# 获取所有远程桌面连接记录$rdpHistoryPath = "HKCU:\Software\Microsoft\Terminal Server Client\Default"$rdpHistory = Get-ItemProperty-Path $rdpHistoryPath# 创建一个用于存储历史记录的数组$entries = @()# 遍历注册表项并提取每一项的名称和值foreach($property in $rdpHistory.PSObject.Properties){if($property.Name -like"MRU*"){$entries+=[PSCustomObject]@{
Name = $property.Name
Value = $property.Value
}}}# 显示所有记录Write-Host"当前的远程桌面连接记录:"-ForegroundColor Cyan
for($i = 0;$i-lt$entries.Count;$i++){Write-Host"$($i): $($entries[$i].Value)"}# 提示用户输入要删除的记录编号或IP地址/计算机名称$selection = Read-Host"请输入要删除的记录编号或IP地址/计算机名称"# 定义一个函数来删除凭据functionRemove-RdpCredentials($computerName){$targetName = "TERMSRV/$computerName"# 获取凭据管理器中的所有 Windows 凭据$credentialList = Get-StoredCredential-Type Generic
# 查找与目标名称匹配的凭据$credential = $credentialList|Where-Object{$_.TargetName -eq$targetName}if($credential){# 删除找到的凭据$credential|Remove-StoredCredentialWrite-Host"已删除凭据:$($credential.TargetName)"-ForegroundColor Green
}else{Write-Host"未找到与 $computerName 相关的凭据。"-ForegroundColor Yellow
}}# 检查输入是编号还是名称/IPif($selection-match'^\d+$'){# 如果是编号,进行删除$index = [int]$selectionif($index-ge 0 -and$index-lt$entries.Count){$keyToDelete = $entries[$index].Name
$valueToDelete = $entries[$index].Value
# 删除注册表项Remove-ItemProperty-Path $rdpHistoryPath-Name $keyToDeleteWrite-Host"已删除记录:$valueToDelete"-ForegroundColor Green
# 删除相应的凭据Remove-RdpCredentials-computerName $valueToDelete}else{Write-Host"输入的编号无效。"-ForegroundColor Red
}}else{# 如果是名称/IP,进行匹配并删除$entryToDelete = $entries|Where-Object{$_.Value -eq$selection}if($entryToDelete){# 删除注册表项Remove-ItemProperty-Path $rdpHistoryPath-Name $entryToDelete.Name
Write-Host"已删除记录:$($entryToDelete.Value)"-ForegroundColor Green
# 删除相应的凭据Remove-RdpCredentials-computerName $entryToDelete.Value
}else{Write-Host"未找到匹配的记录。"-ForegroundColor Red
}}
使用说明
1. 运行 PowerShell
确保以管理员身份运行 PowerShell,以便拥有足够的权限修改注册表和凭据。
2. 安装 CredentialManager 模块
在第一次运行脚本之前,需要安装
CredentialManager
模块来管理凭据:
Install-Module-Name CredentialManager -Force -Scope CurrentUser
3. 执行脚本
将上述代码保存为
.ps1
文件,例如
RemoveRDPHistoryWithCredentials.ps1
。在 PowerShell 中导航到脚本所在的目录,并运行:
.\RemoveRDPHistoryWithCredentials.ps1
4. 输入选择
根据脚本提示,输入要删除的记录的编号或 IP 地址/计算机名称。
注意事项
- 凭据管理器:该脚本使用
CredentialManager模块来访问和删除 Windows 凭据。 - 权限:确保以管理员身份运行脚本。
- 备份:建议在删除之前备份相关数据,以防误删。
通过这个脚本,您可以有效管理和清理远程桌面的连接记录和凭据,保护您的隐私和安全。
版权归原作者 HaiJaine 所有, 如有侵权,请联系我们删除。