You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量保存远程计算机本地账户RDP凭证脚本问题求助

解决RDP自动登录本地账户识别问题

嘿,我来帮你搞定这个远程服务器自动登录的问题~你遇到的核心痛点是:RDP连接远程本地账户时,必须明确指定「目标机器的标识(IP/计算机名)+ 本地用户名」,格式是目标标识\用户名,原来脚本里的%%hostname\user应该是没正确匹配到对应IP的机器名,所以才导致识别失败。

下面给你两种实用方案,按需选择:

方案一:直接用IP作为账户前缀(无需新增文件)

其实不用额外维护计算机名文件,当你通过IP连接时,直接用[IP地址]\本地用户名就能被RDP正确识别。修改你的脚本即可:

@echo off
:: 遍历IPs.txt里的所有服务器IP
for /f %%i in (IPs.txt) do (
    :: 添加凭据,用IP作为本地账户的前缀
    cmdkey /generic:"%%i" /user:"%%i\你的本地用户名" /pass:"你的密码"
    :: 启动RDP连接
    mstsc /v:%%i
)

这种方式最简单,不需要额外维护文件,适合大多数场景。

方案二:使用计算机名前缀(需关联IP和计算机名)

如果你的场景必须用计算机名作为前缀,那可以手动维护一个包含IP和对应计算机名的列表文件,或者通过DNS反向解析自动获取:

子方案1:手动维护IP-计算机名列表

  1. 创建ServerList.txt,每行格式为「IP地址 计算机名」(用空格分隔),示例内容:
192.168.1.100 Server01
192.168.1.101 Server02
  1. 编写批处理脚本,同时读取IP和计算机名:
@echo off
:: 遍历ServerList.txt,tokens=1,2表示拆分每行的两个字段
for /f "tokens=1,2" %%i in (ServerList.txt) do (
    :: %%i是IP,%%j是对应的计算机名
    cmdkey /generic:"%%i" /user:"%%j\你的本地用户名" /pass:"你的密码"
    mstsc /v:%%i
)

这种方式最稳定,不会受网络DNS的影响。

子方案2:自动反向解析IP获取计算机名

如果你的网络DNS配置正确,能通过IP反向解析出计算机名,可以用nslookup命令自动获取,脚本需要启用延迟变量扩展:

@echo off
setlocal enabledelayedexpansion
for /f %%i in (IPs.txt) do (
    :: 反向解析IP获取计算机名,跳过无用行,提取Name字段值
    for /f "skip=1 tokens=2" %%j in ('nslookup %%i ^| findstr /i "Name:"') do (
        set "hostname=%%j"
        :: 如果计算机名带域名后缀(比如Server01.domain.com),只保留前面的计算机名
        for /f "delims=." %%k in ("!hostname!") do set "hostname=%%k"
        cmdkey /generic:"%%i" /user:"!hostname!\你的本地用户名" /pass:"你的密码"
        mstsc /v:%%i
    )
)
endlocal

注意:如果DNS解析不到目标机器的计算机名,这个脚本会失效,所以只适合DNS环境完善的场景。

内容的提问来源于stack exchange,提问作者dwb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:39:22