0

我在 Bamboo 服务器上的 EC2 实例上运行命令时遇到问题。我有一个从 AWS 控制台中的运行命令生成的命令。我将该命令放在我的竹服务器上的脚本中并运行它:

aws ssm send-command --document-name "AWS-RunPowerShellScript" --targets '{\"Key\":\"tag:Name\",\"Values\":[\"Auto-Scaling-Group\"]}' --parameters '{\"commands\":[\"$fileEXE = \\\"C:\\\\Program Files (x86)\\\\NUnit\\\\NUnit.ConsoleRunner.3.7.0\\\\tools\\\\nunit3-console.exe\\\\\\\"\",\"$testDll = \\\"C:\\\\TestFramework\\\\TestFramework\\\\Tests\\\\bin\\\\Debug\\\\TESTS.dll\\\"\",\"[System.Diagnostics.Process]::Start($fileEXE,$testDll)\"]}' --comment "Run Test UI Testing" --timeout-seconds 600 --region us-east-1

它确实运行测试。但它运行 Chrome.exe 浏览器和 chromedriver.exe 作为后台进程。这会引发 NoSuchWindowException,因为没有显示浏览器...

我可以在本地实例上的 PowerShell 中运行相同的命令:(*请注意,这是我粘贴到运行命令控制台以生成上述代码的相同命令。)

$fileEXE = "C:\Program Files (x86)\NUnit\NUnit.ConsoleRunner.3.7.0\tools\nunit3-console.exe\"
$testDll = "C:\TestFramework\TestFramework\Tests\bin\Debug\TESTS.dll"
[System.Diagnostics.Process]::Start($fileEXE,$testDll)

它工作得很好。chromedriver.exe 是一个后台进程,而 chrome.exe(浏览器)是一个正常工作的常规应用程序。

我相信我的问题是 Run Command 如何运行我的测试程序。

运行命令 ( send-command ) 和在本地运行 PowerShell 命令有什么区别?它不应该做同样的事情吗?

4

1 回答 1

0

我认为引号和它们的转义方式都搞砸了。

请参阅:如何在双引号内转义双引号?

这个版本应该看起来更简单:

CMD='$fileEXE = "C:\Program Files (x86)\NUnit\NUnit.ConsoleRunner.3.7.0\tools\nunit3-console.exe";'
CMD+='$testDll = "C:\TestFramework\TestFramework\Tests\bin\Debug\TESTS.dll";'
CMD+='[System.Diagnostics.Process]::Start($fileEXE,$testDll);'

aws ssm send-command --document-name "AWS-RunPowerShellScript" \
  --filters "Name=tag:Name,Values=Auto-Scaling-Group" \
  --comment "Run Test UI Testing" --timeout-seconds 600 --region us-east-1 \
  --parameters commands="'$CMD'"

注意:在 Bash shell 中运行它。

于 2018-02-21T22:25:02.690 回答