我需要在 CMD 的 PowerShell 的帮助下运行远程命令。这是我从 CMD 调用的命令:
powershell -command "$encpass=convertto-securestring -asplaintext mypass -force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,$encpass; invoke-command -computername "REMOTE_COMPUTER_NAME" -scriptblock {<command>} -credential $cred;"
代替<command>
(包括 < 和 > 符号)可以是任何可以在 cmd.exe 中运行的命令。例如可以有perl -e "print $^O;"
or echo "Hello World!"
(注意:不能有perl -e 'print $^O;'
,因为单引号导致 CMD 命令不正确)。因此,该命令perl -e "print $^O;"
和任何其他包含双引号的命令似乎都没有按预期处理。在这里,我希望它从 perl 的角度返回远程框的操作系统名称,但由于 PowerShell 和/或 CMD 对双引号的模糊处理,它不会打印任何内容。
那么问题来了,如何使用 PowerShell 在远程框中为 CMD 运行正确的命令?