我正在编写一个自定义VSTS扩展程序(基于参数)请求URL并通过电子邮件发送结果。我把它的所有部分都正常运行,除了调用PhantomJS exe的部分。这是在附加到电子邮件之前生成屏幕截图所必需的。
相关的PowerShell代码如下:
Write-Verbose "Run phantomjs with $testingurl"
Start-Process -FilePath "phantomjs.exe" -ArgumentList "screenshot.js",$testingurl
$directory = Get-ScriptDirectory
Get-ChildItem $directory -force
我用相关参数调用PhantomJS,这应该在我的工作目录中创建一个名为'example.png'的图像。但是,当我输出目录的内容时,该文件不存在。
我玩过我的扩展程序的“范围”,但它没有帮助。我目前的范围是:
"scopes": [
"vso.build_execute",
"vso.serviceendpoint_manage",
"vso.code_manage",
"vso.packaging_manage",
"vso.release_execute",
"vso.work_write"
],
如果我使用标准PS命令行开关,我还验证了我可以创建一个文件:
New-Item "$directory\test.txt" -ItemType file
我也尝试在我的VSIX包中包含一个空白的'example.png',希望被覆盖,但事实并非如此。
所以,我确信这不是写权限问题。 VSTS日志未指示对PhantomJS exe失败的调用。
您是否不允许从VSTS扩展(构建任务)中的PS脚本调用exe? PS脚本在本地正常工作,所以我觉得这更像是一个环境/权限/允许问题,而不是我自己的代码问题。
答案 0 :(得分:0)
我的问题最终是exe运行并且我的代码继续执行。我不得不添加" -Wait"属于我的电话:
Start-Process -FilePath "phantomjs.exe" -ArgumentList "screenshot.js",$testingurl -Wait
由于调用phantomjs.exe
之后的行要求执行完成,因此" -Wait"确保它首先完成。