本文目录导读:

- PowerShell 脚本方案(Windows)
- Python 脚本方案(使用 pyautogui 或 subprocess)
- 批处理文件方案
- 更安全的凭据存储方案
- 使用第三方工具(如 rdesktop)
- 安全建议
我可以帮您提供几种自动登录远程桌面的脚本方案,以下是几种常见的方法:
PowerShell 脚本方案(Windows)
使用 cmdkey 存储凭据 + mstsc 连接
# AutoRDP.ps1
param(
[string]$ComputerName = "192.168.1.100",
[string]$Username = "Administrator",
[string]$Password = "YourPassword"
)
# 存储凭据
cmdkey /generic:TERMSRV/$ComputerName /user:$Username /pass:$Password
# 创建 RDP 配置文件
$rdpFile = @"
full address:s:$ComputerName
username:s:$Username
prompt for credentials:i:0
authentication level:i:0
"@
# 保存为临时 RDP 文件
$rdpFile | Out-File -FilePath "$env:TEMP\temp_connect.rdp"
# 启动远程桌面连接
Start-Process mstsc -ArgumentList "$env:TEMP\temp_connect.rdp"
# 清理
Start-Sleep -Seconds 5
Remove-Item "$env:TEMP\temp_connect.rdp" -Force
Python 脚本方案(使用 pyautogui 或 subprocess)
# auto_rdp.py
import subprocess
import time
import pyautogui
def connect_rdp(ip, username, password):
# 创建 RDP 文件
rdp_content = f"""
full address:s:{ip}
username:s:{username}
prompt for credentials:i:0
authentication level:i:0
"""
# 保存 RDP 文件
with open('temp_connect.rdp', 'w') as f:
f.write(rdp_content)
# 启动 RDP
subprocess.Popen(['mstsc', 'temp_connect.rdp'])
time.sleep(5) # 等待窗口打开
# 如果需要输入密码(备选方案)
# pyautogui.write(password)
# pyautogui.press('enter')
if __name__ == "__main__":
connect_rdp("192.168.1.100", "Administrator", "YourPassword")
批处理文件方案
@echo off :: auto_rdp.bat set IP=192.168.1.100 set USER=Administrator set PASS=YourPassword :: 存储凭据 cmdkey /generic:TERMSRV:%IP% /user:%USER% /pass:%PASS% :: 创建 RDP 文件 echo full address:s:%IP%> temp_connect.rdp echo username:s:%USER%>> temp_connect.rdp echo prompt for credentials:i:0>> temp_connect.rdp echo authentication level:i:0>> temp_connect.rdp :: 启动 RDP mstsc temp_connect.rdp :: 延迟后清理 timeout /t 5 /nobreak >nul del temp_connect.rdp
更安全的凭据存储方案
使用凭据管理器,避免明文密码:
# Save-Credential.ps1 (第一次运行时保存凭据) $credential = Get-Credential $credential | Export-Clixml -Path "$env:USERPROFILE\.rdp_credentials.xml" # AutoRDP-Secure.ps1 (自动登录) $credential = Import-Clixml -Path "$env:USERPROFILE\.rdp_credentials.xml" $username = $credential.UserName $password = $credential.GetNetworkCredential().Password # 存储凭据到 Windows 凭据管理器 cmdkey /generic:TERMSRV/$server /user:$username /pass:$password # 连接 & mstsc /v:$server
使用第三方工具(如 rdesktop)
Linux 系统推荐使用:
#!/bin/bash # auto_rdp.sh (Linux) HOST="192.168.1.100" USER="Administrator" PASSWORD="YourPassword" RESOLUTION="1920x1080" # 使用 xfreerdp 或 rdesktop xfreerdp /u:$USER /p:$PASSWORD /v:$HOST /size:$RESOLUTION /cert-ignore # 或者使用 rdesktop # rdesktop -u $USER -p $PASSWORD -f $HOST
安全建议
使用前请注意:
- 安全性考虑:不要在脚本中明文存储密码
- 远程桌面设置:确保目标机器已开启远程桌面并允许连接
- 网络防火墙:确保 3389 端口已开放
- 权限配置:确保账户有远程登录权限
增强安全性版本:
# AutoRDP-Secure.ps1 (推荐)
param(
[Parameter(Mandatory=$true)]
[string]$ComputerName,
[Parameter(Mandatory=$true)]
[PSCredential]$Credential
)
try {
# 使用加密凭据
$username = $Credential.UserName
$password = $Credential.GetNetworkCredential().Password
# 存储凭据到凭据管理器
cmdkey /generic:TERMSRV/$ComputerName /user:$username /pass:$password
# 创建安全的 RDP 文件
$rdpFile = "$env:TEMP\rdp_$([guid]::NewGuid()).rdp"
@"
full address:s:$ComputerName
username:s:$username
prompt for credentials:i:0
authentication level:i:0
screen mode id:i:2
"@ | Out-File $rdpFile
# 连接并清理
Start-Process mstsc -ArgumentList $rdpFile
Start-Sleep -Seconds 10
Remove-Item $rdpFile -Force
Write-Host "远程桌面连接已启动" -ForegroundColor Green
}
catch {
Write-Error "连接失败: $_"
}
您可以根据自己的需求选择合适的方法,建议优先使用 PowerShell 方案,因为它们更稳定且易于管理,如果有其他具体需求,请告诉我!