Передача строки (абзаца) с использованием аргумента командной строки в сценарий powershell на php

#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.