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

1

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

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

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

Теги:
powershell
pipe
shell-exec
cmdlet

1 ответ

3

Чтобы проверить это, вы должны просто вставить эту команду в командную строку Windows.

Труба | интерпретируется парсером команд до того, как он даже попадает в powershell, так что все, что после обработки канала рассматривается как отдельный исполняемый файл или команда для запуска.

Вы можете попытаться процитировать всю командную строку, но тогда вам также придется пройти через боли, чтобы избежать любых встроенных двойных кавычек ".

Но простейшая вещь с самого начала могла бы просто выйти из трубы. Символом escape для командной строки Windows является caret ^:

$command = "powershell -command get-aduser -Filter {(givenname -Like '*".$username[0]."*') -And (surname -Like '*".$username[1]."*')} -Properties samaccountname ^| format-table samaccountname 2>&1";
  • 0
    Это исправило это! Большое спасибо, я все время возился с этим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню