使用密码登录远程计算机的命令是“mstsc /admin”。

23

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

mstsc /v:xxx.xxx.xxx.xxx /admin

但是它要求我输入密码。有人可以帮我跳过这一步吗?

我去了谷歌并找到了这个网站。但是我对这个东西(脚本)非常陌生,无法理解如何处理给出的代码。它是一个vbscript文件吗?我能用批处理文件做同样的事情吗?请详细说明,并请求您给予指导。这不是我的领域,但我还是被迫无武装作战。

我的基本需求是从远程桌面中踢出除我以外的所有用户,以执行一些可维护的工作。谢谢。

7个回答

58

转载作为答案: 找到了一个替代方案(在Win8中测试过):

cmdkey /generic:"<server>" /user:"<user>" /pass:"<pass>"

运行它,如果你运行:

mstsc /v:<server>

您不应该收到身份验证提示。


2
它可以工作,但密码会保存在您的系统中。 - Andre Soares
6
@AndreSoares 是的,但是您可以使用命令 cmdkey /delete:servername 或 ip 删除它。该过程适用于 Windows 7。 - Evilripper
它帮助我为Windows 10创建了一个解决方案。谢谢。请查看我的答案 - Milad
PowerShell 清理所有保存的凭据,如果你有很多 $remove = cmdkey /list | & { Process { If($_ -like "*Target=*"){$_.Split("=")[1].Trim()} } }; $remove | & { Process { cmdkey /delete:$_ } }; - Bitcoin Murderous Maniac

9
Milad和Sandy发布的命令在我使用mstsc时无法生效,我需要在/generic开关中添加TERMSRV。我在这里找到了这个信息:https://gist.github.com/jdforsythe/48a022ee22c8ec912b7e cmdkey /generic:TERMSRV/<server> /user:<username> /pass:<password> 然后我可以使用 mstsc /v:<server> 而无需提示登录信息。

9

为了保证安全性,您应该执行3个命令:

cmdkey /generic:"server-address" /user:"username" /pass:"password"
mstsc /v:server-address
cmdkey /delete:server-address

保存凭据的第一个命令

打开远程桌面的第二个命令

出于安全原因而删除凭据的第三个命令

所有这些命令都可以保存在批处理文件(bat)中。 (如果将这些命令保存在批处理文件中,第三个命令直到关闭远程桌面后才会执行)


这里有一个需要注意的地方,如果在前两个命令完成之前使用第三个命令过快地删除它,连接将会失败。最好等待并在连接已经建立后再运行删除操作。 - Bitcoin Murderous Maniac
作为对第一个评论的回应,如果您将这些命令保存在批处理文件中,直到您关闭远程桌面,第三个命令才会被执行。 - Ali Ziaee
如果目标服务器不允许使用保存的凭据登录,则无法工作。 - Pui Ho Lam
如果目标服务器不允许使用保存的凭据登录,则无法工作。 - undefined

7
同样的问题,但是@Angelo的答案对我不起作用,因为我正在使用具有不同凭据的相同服务器。我采用了以下方法,并在Windows 10上进行了测试。 cmdkey /add:server01 /user:<username> /pass:<password> 然后使用mstsc /v:server01连接到服务器。
关键是使用名称而不是IP地址来避免凭据之间的冲突。如果您没有本地可访问的DNS服务器,请尝试c:\windows\system32\drivers\etc\hosts文件。

PowerShell清理所有已保存的凭据,如果有很多 $remove = cmdkey /list | & { Process { If($_ -like "*Target=*"){$_.Split("=")[1].Trim()} } }; $remove | & { Process { cmdkey /delete:$_ } }; - Bitcoin Murderous Maniac

1

这是一个常见的问题,我收到了通知。很抱歉之前忘记回答了,我早就解决了。

net use \\10.100.110.120\C$ MyPassword /user:domain\username /persistent:Yes

将其放入批处理文件中运行,您应该得到您要寻找的内容。


似乎没有起作用。仍然提示输入用户名。 - Angelo
你是否已经用你自己的值替换了上述命令中的"domain\username"、"MyPassword"和IP地址?同时确保你拥有管理员凭证。 - Sandy
1
找到了一种替代方法(在Win8中测试过):cmdkey /generic:"<server>" /user:"<user>" /pass:"<pass>" - Angelo

0

上述命令在我的电脑(Windows 11)上无法运行。

cmdkey /generic:"server-address" /user:"username" /pass:"password"

当我使用命令列出cmdkeys时:
cmdkey /list

我看到添加了一个遗留目标。为我工作的是添加一个特定的TERMSRV-目标:

cmdkey /add:Domain:target=TERMSRV/<SERVER> /user:<DOMAIN>\<USER> /pass:<PASSWORD>

0

将您的用户名、密码和服务器名称保存在一个RDP文件中,并从您的脚本中运行该RDP文件


2
你可以使用以下命令将其作为批处理文件执行: "mstsc C:\foo.rdp" 并添加任何你想要的命令行参数。 - Steven Ackley
在C:\foo.rdp中将"prompt for credentials:i:1"更改为"prompt for credentials:i:0"。 - Kevin S. Miller
您好,以下是翻译的文本:什么是命令行参数?我们能否举个例子来说明如何定义用户名和密码?@StevenAckley - lbrown
请看下面两个帖子。https://dev59.com/72Yq5IYBdhLWcg3wcgLq#27308310 - Steven Ackley
不确定你为什么给我点了踩。这是一个完全有效的答案。 - Steven Ackley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接