RDP 自动化所需的帮助

Required Help in RDP Automation

下面的脚本是自动化 RDP,我坚持以下两点:

How to map local drive as mapped drive in RDP session(tsclient) using powershell script/command

Example like this in RDP : drivestoredirect:s:value

RDP 自动化 - PowerShell 脚本:

cmdkey /list | ForEach-Object{if($_ -like "*target=TERMSRV/*"){cmdkey /del:($_ -replace " ","" -replace "Target:","")}}
echo "Connecting to Server Name"
$Server="Server Name"
$User="Username"
$Password="Password"
cmdkey /generic:TERMSRV/$Server /user:$User /pass:$Password
mstsc /v:$Server
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client" /v "AuthenticationLevelOverride" /t "REG_DWORD" /d 0 /f

通过命令行使用 mstsc.exe 时,您无法控制连接的所有方面。 TS会话中映射本地资源的信息保存在RDP文件中。

如果未指定,它将使用位于“我的文档”文件夹(隐藏文件)中的default.rdp文件。

如果您将默认 RDP 配置为映射本地资源,则所有后续连接也将映射本地资源...但如果您再次更改它,它将应用于所有后续连接。

因此,更好的方法是创建一个 *.rdp 文件并将其用作脚本中的模板:

创建模板 RDP 文件:

  • 启动mstsc.exe
  • 根据需要配置所有选项
  • 将文件保存在某处并在脚本中使用它(即 C:\Temp\MyRDPtemplate.rdp)

现在,更改您的脚本以便在连接到服务器时使用此模板文件:

mstsc "C:\temp\MyRDPtemplate.rdp" /v:$Server

当您在映射本地资源时首次连接到服务器时,您将收到一条警告消息:

如果您想避免出现此消息,请在启动前添加以下注册表项:

reg add "HKCU\Software\Microsoft\Terminal Server Client\LocalDevices" /v $Server /t "REG_DWORD" /d 0x4d /f
mstsc "C:\temp\MyRDPtemplate.rdp" /v:$Server

您可以添加一个全局参数来避免所有服务器出现此消息(例如“AuthenticationLevelOverride”),但我不确定。

关于存储凭据的最后一句话...如果您使用 cmdkey /generic:xxx,则无需指定服务类型 (TERMSRV),这就是 /generic 开关的用途。但它也很好用...

PS: 最后一点,如果你想绕过证书提示(如果你的服务器没有提供有效的证书,你应该添加连接到服务器之前的注册表项 AuthenticationLevelOverride。另请注意,此项对所有连接均有效。

另一个选择是从 RDP 的一些第三部分工具中获得帮助。

https://github.com/VShawn/PRemoteM