exec () и shell_exec () не очень многословны по своей природе. exec () позволяет вам установить третью переменную и получить статус выполнения, но сбоям в большинстве случаев присваивается «1», и вы не можете узнать, была ли это ошибка прав доступа, если двоичный файл не является исполняемым и т. д.
Введите проект, который позволяет PHP получать и динамически взаимодействовать с реальным Powershell. Получите это здесь: https://github.com/merlinthemagic/MTS
После загрузки вы просто используете следующий код:
$shellObj = \MTS\Factories::getDevices()->getLocalHost()->getShell('powershell');
$strCmd1 = 'get-user "testing"';
$return1 = $shellObj->exeCmd($strCmd1);
Возвращение даст вам команду return ИЛИ ошибку от powershell, как если бы вы сидели за консолью. Кроме того, вы можете выполнить любую команду, которая вам нравится, в отношении $ shellObj, среда поддерживается в течение всего срока действия сценария PHP. Поэтому вместо объединения команд в файле сценария просто выполните их одну за другой, используя метод exeCmd (), чтобы вы также могли обрабатывать возврат и любые исключения.