Загруженные модули PS не включаются при вызове Powershell через PHP
Всем добрый день. Мой вопрос касается вызова скрипта powershell с использованием PHP. Итак, если я вызываю скрипт PS1 с помощью модуля ActiveDirectory, проблем не возникает.
Однако, если я вызываю сценарии PS1, которые включают в себя модуль MSOnline, он не работает (но сценарий PS1 работает локально на сервере, и модуль MSOnline загружается). И в соответствии с проверкой, если скрипт PS1 вызывается PHP, если я запускаю команду get-module, MSOnline не загружается.
Вот как я вызываю сценарии PS1 из PHP: shell_exec('C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionPolicy Unrestricted -InputFormat none -File PATH\TO\FILE.ps1 '. "$ Variable" ");
Если я проверю доступные модули в PS1 через PHP, я могу найти MSOnline, но нет загруженных команд. Пожалуйста, смотрите прикрепленную картинку.
1 ответ
2 возможных решения:
Используйте старую версию модуля Powershell для Azure AD (но больше недоступна для загрузки). Это работает для тех, кто в настоящее время использует версию.
При вызове сценария powershell используйте каталог "SysNative" вместо System32 или SysWOW64. Это решение было предложено инженером Microsoft: C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe -executionPolicy Unrestricted -InputFormat none -File PATH\TO\FILE.ps1