随机
Enter 搜索 ↑↓ 切换 Esc 清空

win-rdp-link

命令

Windows 远程桌面一键连接

补充说明

该脚本通过 Windows 内置 cmdkey 凭据管理工具实现 RDP 一键连接,核心原理是先将密码写入系统凭据存储,再启动 mstsc 自动读取凭据完成登录,整个过程无需用户手动输入密码。

PowerShell 命令

$RdpServer = "10.10.10.66"
$RdpUser = "Administrator"
$RdpPass = "你的密码"

# 清理旧凭据
cmdkey /delete:"TERMSRV/$RdpServer" 2>&1 | Out-Null

# 写入凭据
cmdkey /generic:"TERMSRV/$RdpServer" /user:$RdpUser /pass:$RdpPass

# 启动RDP
Start-Process mstsc -ArgumentList "/v:$RdpServer"

# 延时清理凭据
Start-Sleep -Seconds 6
cmdkey /delete:"TERMSRV/$RdpServer" 2>&1 | Out-Null

CMD 命令

@echo off
:: 配置
set RDP_IP=10.10.10.66
set RDP_PORT=3389
set RDP_USER=Administrator
set RDP_PASS="你的密码"

:: 先删除旧的同服务器凭据,避免冲突
cmdkey /delete:TERMSRV/%RDP_IP% >nul 2>&1

:: 写入远程桌面凭据 TERMSRV
cmdkey /generic:TERMSRV/%RDP_IP% /user:%RDP_USER% /pass:%RDP_PASS%

:: 发起连接;/f 全屏;去掉/f就是窗口模式
mstsc /v:%RDP_IP%:%RDP_PORT% /f

:: 延时几秒后清除凭据(可选,不残留密码在系统)
timeout /t 6 /nobreak >nul
cmdkey /delete:TERMSRV/%RDP_IP% >nul 2>&1

工作流程

步骤 说明
1. 清理旧凭据 删除同服务器的历史 TERMSRV 凭据,避免冲突
2. 写入新凭据 通过 cmdkey /generic 写入目标 IP、用户名、密码
3. 启动 mstsc 自动连接远程桌面,无需手动输入密码
4. 延时清理凭据 连接成功后延时删除系统中保存的密码,不留痕迹

注意事项

cmdkey 凭据管理原理

cmdkey 是 Windows 自带的凭据管理命令行工具,支持在 Windows 凭据管理器中增删改查条目:

命令 说明
cmdkey /generic:IP /user:用户名 /pass:密码 写入一条凭据
cmdkey /delete:IP 删除指定凭据
cmdkey /list 列出所有已保存的凭据

mstsc 启动时会自动从 Windows 凭据管理器中查找 TERMSRV/IP 对应的凭据,找到则自动登录,找不到则弹出密码输入框。

TERMSRV 命名规则

凭据管理器中 RDP 凭据的 key 格式为:

TERMSRV/服务器地址

本文脚本先 cmdkey /delete 清理旧条目再写入新条目,避免多端口或多 IP 场景下凭据冲突。

使用场景

场景 推荐版本 说明
临时连接一次内网服务器 PowerShell 单行命令 复制粘贴即可,无需保存文件
频繁连接固定服务器 CMD .bat 批处理 保存为 .bat 双击运行,修改顶部配置即可
自动化运维脚本调用 任一版本 脚本中嵌入 RDP 连接逻辑,无需人工干预
内网可信环境快速运维 任一版本 省去每次手动输入密码的步骤

密码安全说明

常用 mstsc 参数

参数 说明
/v:IP 指定远程服务器地址
/v:IP:端口 指定远程服务器地址和端口
/f 全屏模式连接
/w:宽 /h:高 指定窗口分辨率(如 /w:1920 /h:1080)
/prompt 弹出密码输入框,忽略已保存凭据
/admin 管理员会话模式(强制单用户)
/span 多显示器跨屏全屏

PowerShell 单行粘贴版本

在 PowerShell 中直接粘贴以下命令(修改 IP、用户名、密码即可):

cmdkey /delete:"TERMSRV/10.10.10.66" 2>&1 | Out-Null; cmdkey /generic:"TERMSRV/10.10.10.66" /user:Administrator /pass:"你的密码"; Start-Process mstsc -ArgumentList "/v:10.10.10.66"; Start-Sleep -Seconds 6; cmdkey /delete:"TERMSRV/10.10.10.66" 2>&1 | Out-Null

多条命令用 ; 连接,一行粘贴即可完成连接。

故障排查

问题 原因 解决方法
mstsc 弹出密码输入框 凭据未写入或 key 不匹配 检查 IP/端口是否与 TERMSRV/ 后的值一致
连接后立刻断开 延时过短,凭据在连接建立前被清理 增大 Start-Sleep 或 timeout 的秒数
密码含特殊字符报错 PowerShell 转义问题 用单引号包裹密码,如 $RdpPass = 'P@ss!#$'
cmdkey 命令未找到 系统版本过低 Windows 7 以上均支持,检查 PATH 环境变量
凭据残留未清理 脚本被强制终止 手动执行 cmdkey /delete:TERMSRV/目标IP

相关命令