使用“mstsc /admin”和密码登录远程

使用“mstsc /admin”和密码登录远程

我想使用 mstsc /admin 静默登录服务器。我的批处理文件将代码读取为

set mysrvad=server_ip
set mysrvid=id
set mysrvpswd=pw


cmdkey /generic:%mysrvad% /user:%mysrvid% /pass:%mysrvpswd%
cls
mstsc.exe /v:%mysrvad%
exit

系统仍会提示您输入密码。
帮帮我吧

答案1

不幸的是,我现在无法测试这一点,因为我无法在当前环境中远程访问任何 Windows 设备,但这是想法:

@echo off
set "mysrvad=10.1.2.3"
set /p "mysrvid=enter username: "
set /p "mysrvpswd=Enter Password: "
for /f "delims=" %%p in ('powershell -command "(\"%mysrvpswd%\" | ConvertTo-SecureString -AsPlainText -Force) | ConvertFrom-SecureString;"') do set "encry=%%p"
(for /f "tokens=1,2*" %%i in ("%mysrvad% %mysrvid%") do (
    echo full address:s:%%~i
    echo username:s:%%~j
    echo password 51:b:%encry%
 )
)>%mysrvad%.rdp
start "" mstsc.exe %mysrvad%.rdp

一些解释:

您应该知道,通过测试,set /p提示用户输入用户名和密码,并将它们保存到变量中。第一个for循环运行powershell命令来创建加密密码,然后将其添加到文件中。您可以通过浏览到脚本所在的目录,然后使用记事本编辑该文件夹中的文件rdp来查看文件的样子。或者,您可以打开该位置并执行rdprdpcmdcdtype nameoffile.rdp

在我进入最后的for循环之前,让我解释一下delims=一些基本的循环函数。

for 循环的工作方式如下: for每个项目in(要执行操作的项目)do都有一些内容。默认情况下,它将获取给定的字符串,然后使用delim空格、逗号、分号等迭代器将其拆分。

对于powershell for循环示例,我们需要运行,/f因为我们正在启动一个命令,我们可以在其中提取该命令的输出。因此,请确保我们不使用任何默认分隔符来拆分字符串,以便我们捕获整行并将其分配给元变量%%p

最后,最后一个 for 循环。我们采用为服务器和用户创建的两个变量,并将它们添加为循环中for要使用的项目。tokens=1,2*基于此处默认分隔符中的单词位置,即空格。这允许我们将第一个单词指定为第一个token,将第二个单词指定为第二个。意思%%iserver%%juser我们只需将之前为加密密码创建的变量添加到列表中,然后将所有内容重定向为输出到文件,在本例中将是服务器名称或您在 中添加的 ip mysrvad

当循环完成了它需要做的事情后,它就完成了,我们只需mstsc.exe使用 rdp 文件启动即可。

显然,这只是对这里发生的事情的最低限度的解释,但您可以打开cmd然后运行来查看理解循环及其功能for /?所需的大部分帮助。for

相关内容