Я искал ответ на этот вопрос и нашел эту статью Вот
Тем не менее, я не могу получить предложенную работу при вставке некоторых переменных PHP, команда, которую я передаю:
$command = "powershell -command get-aduser -Filter {(givenname -Like '*".$username[0]."*') -And (surname -Like '*".$username[1]."*')} -Properties samaccountname | format-table samaccountname 2>&1";
И я получаю ошибку
строка » format-table ‘не распознается как внутренняя или внешняя команда,
работоспособная программа или командный файл.
‘(длина = 101)
Как мне заставить это работать так, чтобы он использовал переменные И позволил мне передать это к таблице?
Чтобы проверить это, вам нужно просто вставить эту команду в командную строку Windows.
Труба |
интерпретируется синтаксическим анализатором команд еще до того, как он попадет в powershell, поэтому все, что находится после канала, рассматривается как отдельный исполняемый файл или команда для запуска.
Вы можете попытаться заключить в кавычки всю командную строку, но тогда вам, возможно, придется пройти через все усилия, чтобы избежать любых встроенных двойных кавычек "
,
Но самая простая вещь сразу же может состоять в том, чтобы просто избежать трубы. Экранирующий символ для командной строки Windows — символ каретки ^
:
$command = "powershell -command get-aduser -Filter {(givenname -Like '*".$username[0]."*') -And (surname -Like '*".$username[1]."*')} -Properties samaccountname ^| format-table samaccountname 2>&1";
Других решений пока нет …