从PowerShell执行远程服务器参数化批处理文件。
不会在远程计算机上抛出错误或执行命令。
$path = "D:\run\test-5.2.bat";
Invoke-Command -ComputerName testserver -Scriptblock { "$path" }
bat文件中的脚本是带有参数的msiexec
,只能通过命令提示符执行。
$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
基于此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登录。当我