我可以通过 mstsc 和 运行 远程桌面上的脚本进行 RDP 吗?

Can I RDP through mstsc and run a script on that remote desktop?

我正在编写一个脚本,需要通过 RDP 连接到几台服务器,在那里进行处理,然后再返回。

mstsc /v:<computer> 本身看起来很棒,因为它的 security/credential 提示与您手动执行它一样。

然而,经过一些研究,它似乎只是一个命令行实用程序,仅此而已,因为尝试了以下操作:

mstsc /v:104.209.198.181 | Invoke-Command -ScriptBlock {"New-Item C:\Users\<me>\Desktop\Success.txt -ItemType file"} 

无效。

所以我尝试了人们使用的 Enter-PSSession <computer> -Credential $env:UserName,但与 mstsc 相比,它看起来很乱,因为它看起来很原始(我昨天读的一篇文章试图说这种类型的提示是总是一个网络钓鱼骗局,显然不是,但尝试告诉管理人员),它不会自动填充域,而且我收到一个 WinRM 错误,我确定这将是一个兔子洞。

那么是否可以使用 mstsc 进行 RDP,然后将命令通过管道传递给它,以便它们在该计算机上执行?

答案是否定的。您不能使用 MSTSC.exe.

启动某种管道

但是,您可以使用 PSRemoting 发送命令,就像您已经尝试做的那样:

Invoke-Command -ComputerName '<FQDN>' -ScriptBlock {
    New-Item -Path "$HOME\Desktop\Success.txt" -ItemType File
}

如果您不知道 FQDN,请使用 DNS 查找 IP:

[System.Net.Dns]::GetHostEntry('104.209.198.181')

这一切都失败了..你可以回到 WMI,但你没有得到任何控制台反馈:

$WmiArgs = @{
    'Class'        = 'Win32_Process'
    'Name'         = 'Create'
    'ArgumentList' = 'powershell -NoProfile -NonInteractive -WindowStyle Hidden -Command "New-Item -Path $HOME\Desktop\Success.txt -ItemType File"'
    'ComputerName' = '104.209.198.181'
}
Invoke-WmiMethod @WmiArgs

虽然我测试了上面的方法,但你可以 shorthand 即使这样!

([wmiclass]'\104.209.198.181\root\cimv2:win32_process').
    Create('powershell -NoP -NonI -W Hidden -C "New-Item -Path $HOME\Desktop\Success.txt -ItemType File"')

但是,使用此方法无法传递凭据。