Я пытаюсь запустить команду cmd с помощью Powershell.
CMD
cd C:\apache-jmeter-5.2.1\bin
jmeter -n -t C:\User-search.jmx -l C:\Result.jtl
Powershell
$command = @'
cmd.exe /C C:\apache-jmeter-5.2.1\bin\jmeter -n -t C:\User-search.jmx -l C:\Result.jtl
'@
Invoke-Expression -Command:$command
Ошибка
cmd.exe : The term 'cmd.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included,
verify that the path is correct and try again.
Вкратце: Invoke-Expression
обычно следует избегать < / а>; определенно не используйте его для вызова внешней программы. Кроме того, обычно нет необходимости вызывать внешнюю программу через cmd.exe
(cmd /c ...
), просто вызывайте ее напрямую. — person rAJ schedule 24.02.2020
Это спорный вопрос, потому что вызов C:\apache-jmeter-5.2.1\bin\jmeter -n -t C:\User-search.jmx -l C:\Result.jtl
as-is решает вашу проблему, но ваш symtpom не может быть объяснен с помощью кода, который вы опубликовали. — person rAJ schedule 24.02.2020
Две команды в CMD — ›отлично работают с использованием командной строки. Я просто пытаюсь объединить две строки в одну и хочу запустить Powershell. — person rAJ schedule 24.02.2020
Затем используйте команду из моего предыдущего комментария как есть — нет необходимости в опрометчивых Invoke-Expression
или каких-либо других командлетах. PowerShell — это оболочка, что означает, что она может вызывать внешние программы напрямую — см. Связанный пост для получения дополнительной информации. — person rAJ schedule 24.02.2020
Спасибо. но в этом случае я столкнулся с ошибкой — ›Не удалось найти исполняемый файл или версию Java. Пожалуйста, проверьте вашу установку Java. errorlevel = 2 — person rAJ schedule 24.02.2020
Это несвязанная проблема; это свидетельство того, что вызов в принципе работал, но вызываемая вами программа не может найти java.exe
; единственное различие между вашей cmd
командой и тем, что вы пробовали в PowerShell, заключается в том, что вы сначала не cd
сделали C:\apache-jmeter-5.2.1\bin
в PowerShell, так что, возможно, это причина — просто сначала запустите cd C:\apache-jmeter-5.2.1\bin
в PowerShell (cd
в PowerShell — это встроенный псевдоним для командлета Set-Location
). — person rAJ schedule 24.02.2020
не повезло. та же ошибка. я должен задать для этого новый вопрос? — person rAJ schedule 24.02.2020
Пожалуйста, сделайте это и используйте предложенный мной метод прямого вызова вместе с тем, что gcm java.exe
показывает в PowerShell и чем %PATH%
в cmd.exe
отличается от $env:Path
в PowerShell. — person rAJ schedule 24.02.2020