Всем добрый день. Мой вопрос касается вызова сценария 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, но не загруженные команды. См. Прикрепленное изображение.
2 возможных решения:
Используйте старую версию модуля Powershell для Azure AD (но она больше не доступна для загрузки). Это работает для тех, кто в настоящее время использует эту версию.
Используйте каталог «SysNative» вместо System32 или SysWOW64 при вызове сценария powershell. Это решение было предложено инженером Microsoft: C: \ Windows \ SysNative \ WindowsPowerShell \ v1.0 \ powershell.exe -executionPolicy Unrestricted -InputFormat none -File PATH \ TO \ FILE.ps1