powershell - 脚本执行在 jenkins powershell 插件中持续无限时间
问题描述
我能够在机器上执行 powershell 脚本,但无法使用 jenkins powershell 插件执行它
我的 powershell 脚本执行另一个程序的 UI(QlikView),然后在我直接在机器上执行脚本时关闭它。但是,当我使用 jenkins powershell 插件执行相同操作时,它不起作用,执行会持续无限时间。
[CmdletBinding()]
param (
$FullQvwPath
)
function qv-SaveAndClose-QVW
{
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
$QvwPath
)
try {
$qvComObject = new-object -comobject QlikTech.QlikView
$NewCreatedDoc = $qvComObject.CreateDoc()
$NewCreatedDoc.SaveAs($QvwPath)
$NewCreatedDoc.CloseDoc()
$qvComObject.Quit()
}
finally {
}
}
qv-SaveAndClose-QVW -QvwPath $FullQvwPath
我已将上述代码放入文件中 - QlikSaveAndClose.ps1
.\QlikSaveAndClose.ps1 -FullQvwPath 'C:\Program Files (x86)\Jenkins\Dashboard.qvw
解决方案
会不会是文件已经存在了?在这种情况下SaveAs
会提示覆盖文件。所以,先删除它。也将Quit
放在 finally 中,这样 comobject 总是关闭的,即使出现错误也是如此。虽然我们这样做了,但您的 cmdlet只能使用经过批准的动词-名词名称:
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[String] $FullQvwPath
)
function Save-QVW
{
param (
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[String] $Path
)
$qvComObject = New-Object -ComObject "QlikTech.QlikView"
try
{
$newCreatedDoc = $qvComObject.CreateDoc()
if (Test-Path -Path $Path)
{
Remove-Item -Path $Path -Force
}
$newCreatedDoc.SaveAs($Path)
$newCreatedDoc.CloseDoc()
}
finally
{
$qvComObject.Quit()
}
}
Save-QVW -Path $FullQvwPath
推荐阅读
- python - 将 skipna 的 pandas 全局默认设置为 False
- vue.js - Windows 上的 Electron Builder Vue cli 3 应用程序抛出错误 registerStandardSchemes undefined
- angular - 调用canadapost autocomplete api以angular填充文本框
- phonegap-plugins - 未捕获的 ReferenceError:模块未在 push.js 中定义
- javascript - 如何在中间加快设置间隔过程并在结束时变慢
- reactjs - 错误站点二@0.1.0:引擎“节点”与此模块不兼容。预期版本“10.15.0”。得到“10.15.3”
- python - python - 当元素在python列表中为“-”时,如何将当前元素与下一个元素组合?
- javascript - 如何模拟不接受任何参数的方法,并且它应该在 1 个测试中正常工作,并且应该在另一个测试中抛出错误
- c# - 当从视图 POST 到控制器时模型总是 NULL
- c# - 从 EF linq 查询中检索结果