我希望使用调用在远程机器中执行命令,但 .cmd 文件将调用额外的 .vbs 脚本。所以我想我可能不得不提到 CScript 如果是这样我如何在下面的命令中同时提到 cmd/c 和 cscript
Invoke-Command -computername blrscrv01 -ScriptBlock { param($path, $command ) cmd /c $path $command } -args '"C:windowssystem32cscript.exe"','"/?"'
我希望使用调用在远程机器中执行命令,但 .cmd 文件将调用额外的 .vbs 脚本。所以我想我可能不得不提到 CScript 如果是这样我如何在下面的命令中同时提到 cmd/c 和 cscript
Invoke-Command -computername blrscrv01 -ScriptBlock { param($path, $command ) cmd /c $path $command } -args '"C:windowssystem32cscript.exe"','"/?"'
当我删除额外的引用级别时,您的示例对我有用。
故障排除
进入远程会话并四处寻找。
验证目标脚本是否存在且可访问。
尝试以交互方式运行脚本。
或者
### 选择
您可能会尝试的另一件事不是远程调用 cmd 脚本,而是远程发出命令。
New-PSSession
将返回一个句柄,您可以使用它与远程机器进行交互处理。您可以使用Invoke-Command
重复发出命令并获得结果(不过,作为原始数据类型和通用对象,而不是实际对象本身)。修改后的脚本
这是您在评论中添加的脚本的修改版本。我已经删除了嵌套的
Invoke-Command
(我不知道为什么它是必要的,你已经在远程机器上运行命令)。由于评论中的换行符丢失了,我不知道是否有任何语句分隔符问题(我只是假设没有,尽管它的“格式化”形式作为单行,它会死太可怕了,因为 PoSH 不会知道一个语句在哪里结束,下一个语句在哪里开始)。这至少使远程脚本运行并产生了预期的输出。 (我发出了计算机名、用户名和文件位置。)
请记住,此方法不使用任何传输层/应用层加密,因此密码是通过网络以明文形式发送的。