当前位置: 首页 > 知识库问答 >
问题:

无法使用PowerShell在远程计算机上运行参数化批处理文件

巫朝明
2023-03-14

从PowerShell执行远程服务器参数化批处理文件。

不会在远程计算机上抛出错误或执行命令。

$path = "D:\run\test-5.2.bat";
Invoke-Command -ComputerName testserver -Scriptblock { "$path" }

bat文件中的脚本是带有参数的msiexec,只能通过命令提示符执行。

共有2个答案

裴成文
2023-03-14

$path是一个字符串。与CMD或bash不同,PowerShell只是简单地回显空字符串,而不是执行它们。使用呼叫接线员(

& "$path"

启动流程

Start-Process cmd.exe -ArgumentList '/c', $path -NoNewWindow -Wait

让PowerShell将字符串作为命令执行。因为你说你正在运行msiexec。可能需要使用批处理脚本中的exe

最重要的是,你有一个范围问题。脚本块中的变量$path与全局范围中的变量不同。您可以通过使用:范围限定符来缓解这种情况:

Invoke-Command -Computer testserver -Scriptblock { & "$using:path" }

或者通过将$path作为参数传递给scriptblock:

Invoke-Command -Computer testserver -Scriptblock { & "$($args[0])" } -ArgumentList $path

戚令秋
2023-03-14

基于此msdn链接,您可以在远程计算机上运行ps1脚本文件。因此,如果可以将bat文件的内容“移植”到ps1中,它应该可以工作。以下是msdn示例:

示例11:在文本文件中列出的所有计算机上运行脚本

 PS C:\> Invoke-Command -ComputerName (Get-Content Servers.txt) -FilePath C:\Scripts\Sample.ps1 -ArgumentList Process, Service

此示例使用Invoke命令cmdlet运行示例。服务器中列出的所有计算机上的ps1脚本。txt文件。该命令使用FilePath参数指定脚本文件。此命令允许您在远程计算机上运行脚本,即使远程计算机无法访问脚本文件。

提交命令时,将显示示例的内容。ps1文件被复制到脚本块中,脚本块在每个远程计算机上运行。此过程相当于使用ScriptBlock参数提交脚本内容。

希望有帮助

 类似资料:
  • 我想执行一个批处理文件 D:\apache-tomcat-6.0。20\apache-tomcat-7.0。30\bin\shutdown。球棒 它位于我的服务器上。 我应该如何编写我的文件?

  • 问题内容: 如何运行批处理文件并将参数传递给jar文件? 这不起作用 mybat.bat 运行蝙蝠文件 Java只能看到 问题答案: 我刚刚尝试了一个仅将参数转储到屏幕的小型Java程序: 和以下批处理文件: 我最终得到以下结果 对于与您相同的命令行,等号’=’消失了。现在,如果将批处理文件截断为此: 您将获得另一个结果(可能是您期望的结果-不清楚) 这种%*语法的优点在于,它可以通过接受任意数量

  • 是否有一种方法可以使用Selenium Grid来执行位于远程节点机器上的批处理文件以更改主机文件? VM1包含代码,并充当中心VM2运行Chrome节点VM3运行火狐节点VM4运行IE节点 每个VM上都存在一组批处理文件,但是,按原样运行时,只有VM1执行批处理文件。如何告诉Selenium在正确的节点上执行批处理文件? FWIW,我现在通过詹金斯执行任务。 最初编写代码时,我只是通过Eclip

  • 我的设置。我有三台PC:MyComp,Server1和Server2,两个类似的脚本使用调用命令RemTest1.ps1,它在远程Server1上调用RemTest2.ps1。RemTest2 使用 invoke-command 在 Server2 上运行脚本块。我使用的是Powershell版本5.1当我运行脚本从MyComp到Server1时,它工作正常。当我从Server1运行到Server

  • 当试图从Jenkins向远程服务器执行一些shell命令时,我得到“主机密钥验证失败”。错误。

  • 我正在尝试将本地计算机(Windows x64)上的JProfiler GUI连接到远程计算机(Windows x64)上运行的JProfiler代理。远程机器有两个JVM,一个是JBOSS JVM,另一个是Java应用程序,通过YAJSW的包装服务作为Windows服务。这些JVM由Windows用户配置文件1启动。我将JProfiler代理zip文件粘贴到远程机器上,并通过mstsc登录。当我