上下文:
我们尝试为UFT和Selenium执行配置运行器虚拟机。这些虚拟机基于citrix,并在夜间以最新的生产映像重新启动,并在此重新启动过程中丢失其自动化配置。然后,一项分担的任务将执行具有提升权限的powershellscript,将jenkinsfolder复制到虚拟机,下载jenkins从站。用于连接的jar,安装uft和eclipse,最后开始连接到jenkins。
如果我以管理员身份启动Powershell并手动执行命令,则一切正常。
如果我将其放入powershell脚本文件中,并使用任务计划任务执行它,则一切正常。但是,如果我通过詹金斯(Jenkins)启动UFT测试用例,我的工作将得到“返回参数的类型无效”。似乎该连接不是以提升权限开始的。
如果我将脚本切成两半。除了一个脚本中的连接和第二脚本中的连接以外的所有步骤,该测试用例都可以正常运行。
我在批处理文件中重建了脚本,但是具有完全相同的行为。
因此,选项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;
}
}
最佳答案
如果您的UFT.exe进程是使用Quicktest.Automation COM对象创建的,则该进程将不会从其父进程继承任何东西(如提升的权限,处理程序,环境变量等)。它似乎是从用户上下文中衍生出来的。
作为一种解决方法,您可以从命令行(禁用启动屏幕和加载项选择)启动UFT.exe进程,稍等片刻,然后将其与Automation Object连接。通过这种方式,UFT将继承您的环境变量和处理程序,以及父进程的高权限(Jenkins)
关于java - 如果ps1文件中的Javastatement与其他语句混合使用,则不会以admin的身份执行。 (错误:返回参数的类型无效),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62084663/