当前位置: 首页 > 知识库问答 >
问题:

使用Jenkins的参数通过PSExec运行JMeter

壤驷高洁
2023-03-14

我有以下结构:

  1. 机器1:Jenkins从机(Windows)
  2. 机器2:JMeter机器(Windows)

我想得到什么?机器1从Jenkins接收一些参数(用于JMeter测试)。

path/Performance.bat %param1% %param2% %param3%

因此,性能.bat看起来像这样:

IF %param1%==param1_value(
IF %param2%==param2_value(
@echo
path_to_psexec\PsExec.exe \\machine1_address -u user -p password cmd /c (

 MKDIR %param3%\Automation_Results_Build_%BUILD_NUMBER%_ID
 cd %JMeterPath%/
 jmeter -n -t [...])
 
exit /b 0
))

因此,基本上它会创建一个结果文件夹,然后导航到JMeter位置并尝试使用给定值运行性能测试。

问题。PSExec似乎没有按预期执行命令。通过CMD发送3个命令:为结果创建文件夹,导航到JMeter路径,运行测试。我的方法有什么问题?如何在同一个 PSexec 调用中运行多个 CMD 命令?

输出:

ECHO is on.

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Connecting to machine_address...
   
Starting PSEXESVC service on machine_address...
    
Connecting with PsExec service on machine_address...
    
Starting cmd on machine_address...
    
cmd exited on machine_address with error code 0.
The system cannot find the path specified.
'jmeter' is not recognized as an internal or external command,
operable program or batch file.

为什么系统找不到指定的路径。

我不想创建一个<代码>。bat文件,因为我想在Jenkins中看到测试的输出。

共有1个答案

郜联
2023-03-14

你可以创建一个 PowerShell 脚本,在其中可以执行所有命令。

以下命令需要包含在您的PowerShell脚本中,该脚本将连接到您的远程计算机并在远程计算机上执行命令。

$machine_addr = "your_ip_address"

$user = your_username

$Password = your_password

$pass = ConvertTo-SecureString -AsPlainText $Password -Force

$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $user ,$pass

Invoke-Command -ComputerName $machine_addr -ScriptBlock {C:\path_to_your_jmeter_with_parameters} -Credential $Cred

您可以根据自己的方便添加其他命令,例如您要创建文件夹

New-Item -Path "folder name with path" -ItemType directory 

创建PowerShell脚本后,只需从批处理文件中进行调用。

C:\Users\%username%\Desktop\path_to_your_powershell_file\filename.ps1

建议:您也可以创建带有参数的单个PowerShell脚本,就像您处理批处理文件一样。(这将消除创建批处理文件的负担)

 类似资料:
  • 问题内容: 我需要一个“接受参数的可运行对象”,尽管我知道这种可运行对象实际上并不存在。 这可能表明我的应用程序设计存在根本缺陷,并且/或者疲倦的大脑中存在智力障碍,因此我希望在这里找到一些建议,以在 不 违反基本OO原则的 情况下 实现以下目标: 任何想法如何完成上述工作? 问题答案: 自从我最初发布此文章至今已经快9年了,说实话,Java从那时起取得了一些进步。我将原始答案留在下面,但无需人们

  • 问题内容: 我的程序正在获取命令行参数。使用Ant时如何通过? 问题答案: 扩展了Richard Cook的答案。 这是运行任何程序(包括但不限于Java程序)的任务: 这是从文件运行Java程序的任务: 您可以像这样从命令行调用: 确保使用语法;如果运行此命令: 然后将尝试运行目标和。

  • 我正在通过jenkins运行robot framework,但当我运行构建时,我会得到firefox错误 由用户匿名构建在工作区/var/lib/jenkins/jobs/rocko/workspace中启动 git rev-parse--is-inside-work-tree#timeout=10从远程git存储库获取更改git config remote.origin.url https://

  • 我正在尝试使用pskill.exe杀死在远程PC上运行的java进程,它通过批处理文件运行得很好。但是,它在运行OS进程采样器时不起作用。附上OS采样器截图。 我得到下面的错误信息,如果你能帮助我解决问题,我很感激 线程名称:线程组1-1示例开始时间:2017-06-14 14:25:31英国夏令时加载时间:16连接时间:0延迟时间:0大小以字节为单位:0发送字节:0头大小以字节为单位:0主体大小

  • 问题内容: (这是我的同事在其他地方发布的一个问题,但我认为我应该在这里发布,以查看是否可以吸引其他受众。) 大家好,我正在测试编写一个小型Java应用程序的可能性,该应用程序将使用Psexec启动远程作业。在测试将Java程序的stdin和stdout绑定到psexec的过程中,我遇到了一个奇怪的错误。 我的测试程序是一个基本的回声程序。它启动一个从stdin读取的线程,然后将读取的输出直接通过

  • 我有一台linux机器(比如m1)[一台openStack机器]来运行我的jmeter测试。我的典型过程是将最新的jmx文件放在这台机器上,并在以下命令下触发:nohup/path/to/jmeter/bin/jmeter-n-t/path/to/script/test。jmx-l/path/to/resultsFolder/results。jtl 现在,我想通过jenkins作业触发相同的测试,