#php #powershell #command-line-arguments
#php #powershell #аргументы командной строки
Вопрос:
Я выполняю Shell_Exec()
с помощью php следующим образом:
$com='C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoProfile -InputFormat none -command "."'.$pshell_path.'"" "'.$name.'" "'.$pbody.'" < NUL';
$Result = Shell_Exec ($com);
где $pshell_path
— путь к сценарию powershell, $name
содержит имена и $pbody
объявляется следующим образом:
$pbody = "Ignore this mail. This is a test mail. Multiline text mail. Hello world"
это какой-то абзац текста. Когда я выполняю Shell_Exec()
переменную $pbody, она будет игнорировать только первое слово, а не весь абзац. Как это исправить?
Ответ №1:
<?php
$pbody = "Ignore this mail. This is a test mail. Multiline text mail. Hello world";
$pshell_path = '/root';
$name = 'Username';
$com="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoProfile -InputFormat none -command .\$pshell_path $name '$pbody' < NUL";
echo 'My Command line is: '. $com;
$result = Shell_Exec ($com);
?>
Комментарии:
1. В этом случае он корректно печатается на php перед выполнением команды, и когда я проверяю из powershell, в командной строке ничего не передается @Mariano
2. в вашем $pshell_path вы вызываете другой сценарий powershell?
3. ДА. Это единственный сценарий powershell
4. Вы пытались скопировать командную строку, напечатанную после «Моя командная строка:», вставить и запустить ее?
5. Нет. Мне нужно выполнить на php.