我具有以下结构:
我想获得什么? 机器1 从Jenkins(用于JMeter测试)接收一些参数。
path/Performance.bat %param1% %param2% %param3%
因此,Performance.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.
为什么“系统找不到指定的路径。”
我不想在计算机2上创建.bat文件,因为我想查看Jenkins中测试的输出。
谢谢您的时间。
答案 0 :(得分:1)
您可以创建一个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脚本(这将减轻创建批处理文件的负担)