Выполнение скрипта продолжается в течение бесконечного времени в плагине jenkins powershell - PullRequest
0 голосов
/ 14 июня 2019

Я могу выполнить сценарий powershell на компьютере, но не могу сделать это с помощью плагина jenkins powershell

Мой сценарий powershell выполняет пользовательский интерфейс другой программы (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

1 Ответ

0 голосов
/ 14 июня 2019

Может быть, файл уже существует? В этом случае SaveAs предлагает перезаписать файл. Итак, сначала удалите его. Также поместите Quit в finally, чтобы комобъект всегда был закрыт даже при ошибках. И пока мы работаем над этим, используйте только утвержденные имена глаголов для своих командлетов:

[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
...