用脚本自动登录远程桌面

wen 实用脚本 1

本文目录导读:

用脚本自动登录远程桌面

  1. PowerShell 脚本方案(Windows)
  2. Python 脚本方案(使用 pyautogui 或 subprocess)
  3. 批处理文件方案
  4. 更安全的凭据存储方案
  5. 使用第三方工具(如 rdesktop)
  6. 安全建议

我可以帮您提供几种自动登录远程桌面的脚本方案,以下是几种常见的方法:

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

安全建议

使用前请注意:

  1. 安全性考虑:不要在脚本中明文存储密码
  2. 远程桌面设置:确保目标机器已开启远程桌面并允许连接
  3. 网络防火墙:确保 3389 端口已开放
  4. 权限配置:确保账户有远程登录权限

增强安全性版本:

# 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 方案,因为它们更稳定且易于管理,如果有其他具体需求,请告诉我!

抱歉,评论功能暂时关闭!