Javastatement в файле ps1 не выполняется от имени администратора, если он смешан с другими операторами. (Ошибка: возвращаемый аргумент имеет недопустимый тип) - PullRequest
0 голосов
/ 29 мая 2020

context:

Мы пытаемся настроить runner vms для выполнения UFT и Selenium. Эти виртуальные машины основаны на Citrix и перезапускаются ночью с самым последним продуктивным образом и теряют свою конфигурацию автоматизации в этом процессе перезапуска. Затем запланированная задача выполняет сценарий powershellscript с повышенными правами, который копирует папку jenkins в виртуальную машину, загружает подчиненное устройство jenkins. jar для соединения, устанавливает uft и eclipse и, наконец, запускает соединение с jenkins.

  1. Если я запускаю powershell как администратор и выполняю команды вручную, все работает нормально.

  2. Если я помещу его в файл сценария PowerShell и выполню с запланированной задачей, все будет в порядке. Но я получаю сообщение «Возвращаемый аргумент имеет недопустимый тип» в моей работе, если я запускаю тестовый сценарий UFT через jenkins. Похоже, соединение запущено не с повышенными правами.

  3. Если разрезать скрипт пополам. Все шаги, кроме подключения в одном сценарии и подключения во втором, тестовый пример выполняется без каких-либо проблем.

Я перестраиваю сценарий в пакетном файле, но он имеет полностью такое же поведение .

Итак, вариант 3 работает, но администраторы Citrix и мой руководитель недовольны таким непредсказуемым поведением. У кого-нибудь есть подсказка, как мы можем запустить скрипт в одном скрипте PowerShell?

полный Scipt (выдает ошибку):

switch -wildcard($env:computername){
    "wxp-guirun-p*" {

        robocopy '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\VhvEntw' 'c:\VHVEntw' /E

        Invoke-WebRequest https://jenkins-master.ads.vhv.de/jnlpJars/slave.jar -OutFile c:\vhvEntw\Jenkins\slave.jar

        cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\UFT_3811-000\14.0\Package\Wrapper\Default\Wrapper_64.vbs'

        Start-Process 'C:\Program Files (x86)\HP\Unified Functional Testing\bin\HP.UFT.LicenseInstall.exe' -Argument 'concurrent 20402 1 SERVERADRESS'

        cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\eclipse_1685-000\4.10.0\Package\Wrapper\Default\Wrapper.vbs'

        break;
       }

}

echo $env:computername

switch -wildcard($env:computername){

    "wxp-guirun-p01" {
           java -jar c:\vhventw\jenkins\slave.jar -jnlpUrl SERVERADRESS AND SECRET -workDir "C:\vhvEntw\Jenkins"
            break;
       }
}

разрезать пополам, это работает:

Установка:

switch -wildcard($env:computername){
    "wxp-guirun-p*" {

        robocopy '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\VhvEntw' 'c:\VHVEntw' /E

        Invoke-WebRequest https://jenkins-master.ads.vhv.de/jnlpJars/slave.jar -OutFile c:\vhvEntw\Jenkins\slave.jar

        cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\UFT_3811-000\14.0\Package\Wrapper\Default\Wrapper_64.vbs'

        Start-Process 'C:\Program Files (x86)\HP\Unified Functional Testing\bin\HP.UFT.LicenseInstall.exe' -Argument 'concurrent 20402 1 SERVERADRESS'

        cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\eclipse_1685-000\4.10.0\Package\Wrapper\Default\Wrapper.vbs'

        break;
       }

}

Подключение:

echo $env:computername

switch -wildcard($env:computername){

    "wxp-guirun-p01" {
            java -jar c:\vhventw\jenkins\slave.jar -jnlpUrl SERVERADRESS AND SECRET -workDir "C:\vhvEntw\Jenkins"
            break;
       }
}

1 Ответ

0 голосов
/ 30 мая 2020

Если ваш процесс UFT.exe создан с использованием COM-объекта Quicktest.Automation, тогда процесс не будет наследовать ничего от своего родительского процесса (например, повышенные права, обработчики, переменные среды и т. Д. c). Кажется, что это происходит из пользовательского контекста.

В качестве обходного пути вы можете запустить процесс UFT.exe из командной строки (отключить экраны запуска и выбор надстройки), немного подождать, а затем подключиться к это с вашим объектом автоматизации. Таким образом, UFT унаследует ваши переменные среды и обработчики, а также повышенные права родительского процесса (Jenkins)

...