Проблема командлета PHP powershell с символом и переменными канала

Я искал ответ на этот вопрос и нашел эту статью здесь

Тем не менее, я не могу получить предложенную работу при вставке некоторых переменных 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)

Как мне заставить это работать так, чтобы он использовал переменные И позволил мне передать это к таблице?

1 ответ

Чтобы проверить это, вам нужно просто вставить эту команду в командную строку 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";
Другие вопросы по тегам