试图远程运行PowerShell中的批处理文件无效

时间:2018-03-07 16:18:04

标签: selenium batch-file cmd webdriver powershell-remoting

我目前正在管理Selenium Grid,其中20台远程PC充当位于服务器上的单个Hub的节点。目前,当我想重新启动集线器或节点并清除任何陈旧的chromedriver或chrome实例时,我必须远程访问每台机器。我试图通过Powershell自动化这个过程。

到目前为止,我已经设法编写ps脚本来杀死PC上的chrome,chromedriver和java的任何实例,然后重新启动集线器或节点。它们在每台机器上本地启动时工作,但是当我尝试通过PSSession执行它们时失败。

我已成功启用每台计算机上的远程会话,并且我可以调用将取消现有java和chrome实例的Invoke-Commands,但我无法重新启动集线器或节点。

Hub powershell脚本示例:

#This script kills any existing java process and runs StartHub.bat
Set-Location C:\Selenium
kill -Name java -Force -PassThru -ErrorAction Continue
Start-Process -FilePath "C:\Selenium\StartHub.bat" -PassThru -Verbose

bat文件如下:

java -jar C:\Selenium\selenium-server-standalone-3.4.0.jar -role hub -hubConfig "V:\ServerFiles\hubconfig.json"

我一直在测试执行策略不受限制,我的网络管理员已经更改了GPO以允许我远程启动Java进程,但它只是不起作用。我尝试过几种方法,我在下面列出:

1:在远程服务器上输入PSSession并调用ps1文件:

C:\RestartHub.ps1

结果是现有的集线器实例被终止但新的实例未打开。

2:然后我尝试使用ScriptBlock调用cmd脚本启动作业以启动批处理文件:

Set-Location C:\Selenium
kill -Name java -Force -PassThru -ErrorAction Continue
Start-Job -ScriptBlock{cmd /c start "C:\Selenium\StartHub.bat"} -Name Hub -Verbose 

这会再次杀死现有的集线器实例,但启动脚本不会以静默方式运行或失败。

我查看了远程计算机上的安全日志,看看是否存在任何问题,但使用具有完全管理权限的合适用户,PSSession似乎是正确的。

我还将远程计算机上的ExecutionPolicy更改为restricted,以查看是否显示访问被拒绝错误。我改回unrestricted,错误就消失了。

我很感激任何想法。

1 个答案:

答案 0 :(得分:1)

Start-Process将从可执行文件启动进程,您不能将bat文件用作可执行文件,-FilePath需要可执行文件的路径 见下文,

Start-Process cmd -Argumentlist "C:\Selenium\StartHub.bat" -PassThru -Verbose