Назад | Перейти на главную страницу

Загруженные модули 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, но не загруженные команды. См. Прикрепленное изображение.

2 возможных решения:

  1. Используйте старую версию модуля Powershell для Azure AD (но она больше не доступна для загрузки). Это работает для тех, кто в настоящее время использует эту версию.

  2. Используйте каталог «SysNative» вместо System32 или SysWOW64 при вызове сценария powershell. Это решение было предложено инженером Microsoft: C: \ Windows \ SysNative \ WindowsPowerShell \ v1.0 \ powershell.exe -executionPolicy Unrestricted -InputFormat none -File PATH \ TO \ FILE.ps1