我需要借助CMD的PowerShell运行远程命令。这是我从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;"
或echo "Hello World!"
(注意:不能有perl -e 'print $^O;'
,因为它是由于单引号导致的CMD命令不正确)。所以看起来命令perl -e "print $^O;"
和任何其他包含双引号的命令不按预期方式处理。在这里,我期望它从perl的角度返回远程框的操作系统名称,但由于PowerShell和/或CMD对双引号的处理很模糊,因此它不会打印任何内容。
所以问题是,如何使用PowerShell在远程框中为CMD运行命令正确?
您确定它不是REMOTE_COMPUTER_NAME附近的未转义引号(''')的效果吗? – user268396
@ user268396是的,我一般会尝试使用单引号的REMOTE_COMPUTER_NAME,并且它不会影响我可以肯定地告诉问题是 –