大家好。我的问题是关于使用 PHP 调用 powershell 脚本。因此,如果我使用 ActiveDirectory 模块调用 PS1 脚本,则不会出现任何问题。
但是,如果我调用包含 MSOnline 模块的 PS1 脚本,它就不起作用(但 PS1 脚本在服务器本地工作,并且已加载 MSOnline 模块)。并且根据检查,如果 PS1 脚本由 PHP 调用,如果我发出 get-module 命令,则不会加载 MSOnline。
这是我从 PHP 调用 PS1 脚本的方式:shell_exec('C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionPolicy Unrestricted -InputFormat none -File PATH\TO\FILE.ps1 '. "$variable");
如果我通过 PHP 检查 PS1 中的可用模块,我可以找到 MSOnline,但没有加载的命令。请参阅附图。
答案1
2 个可能的解决方案:
使用旧版本的 Azure AD Powershell 模块(但不再可供下载)。这适用于当前正在使用该版本的人。
调用 powershell 脚本时使用目录“SysNative”,而不是 System32 或 SysWOW64。此解决方案由 Microsoft 工程师建议:C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe -executionPolicy Unrestricted -InputFormat none -File PATH\TO\FILE.ps1