ps1文件中的Javastatement如果与其他语句混合,则不会以admin的身份执行。 (错误:返回参数的类型无效)

问题描述 投票:0回答:1

上下文:

我们尝试配置运行器虚拟机以执行UFT和Selenium。这些虚拟机基于citrix,并在夜间以最新的生产映像重新启动,并在此重新启动过程中丢失其自动化配置。然后,一个分担的任务将执行具有提升权限的powershellscript,该脚本将jenkinsfolder复制到该虚拟机,下载jenkins从站。用于连接的jar,安装uft和eclipse,最后开始连接到jenkins。

  1. 如果我以管理员身份启动powershell并手动执行命令,则一切正常。

  2. 如果我将其放入powershell脚本文件中,并使用任务分散的Task执行它,看起来一切正常。但是,如果我通过詹金斯(Jenkins)启动UFT测试用例,则会在工作中得到“返回参数的类型无效”的信息。看起来该连接不是从提升权限开始的。

  3. 如果我将脚本切成两半。除了一个脚本中的连接和第二脚本中的连接以外的所有步骤,该测试用例都可以正常运行。

我在批处理文件中重建脚本,但是具有完全相同的行为。

所以选项3起作用了,但是citrix管理员和我的领导对这种不可预测的行为不满意。是否有人暗示我们如何才能在一个Powershell脚本中运行该脚本?

完整密码(产生错误):

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;
       }
}
java powershell batch-file jenkins hp-uft
1个回答
0
投票

如果您的UFT.exe进程是使用Quicktest.Automation COM对象创建的,则该进程将不会从其父进程继承任何东西(如提升的权限,处理程序,环境变量等)。它似乎是从用户上下文中衍生出来的。

作为一种解决方法,您可以从命令行(禁用启动屏幕和加载项选择)启动UFT.exe进程,稍等片刻,然后将其与自动化对象连接。通过这种方式,UFT将继承您的环境变量和处理程序,以及父进程的高权限(Jenkins)

© www.soinside.com 2019 - 2024. All rights reserved.