PHP |执行命令| Shell_exec()| Active Directory

PHP |执行命令| Shell_exec()| Active Directory,php,powershell,active-directory,exec,Php,Powershell,Active Directory,Exec,感谢您花时间阅读我的问题,让我们直接开始吧 我的最终目标是能够拥有一个基于web的PHP应用程序,允许用户在网络中为用户修改active directory 我发现需要通过Powershell运行命令才能更改active directory中的用户密码 下面是我当前的设置: 有一台主服务器安装了IIS,web应用程序位于其中。 将有多台计算机连接到网络,这些计算机导航到网站并执行这些命令 我已尝试添加代码: $query = shell_exec('Import-Module ActiveDir

感谢您花时间阅读我的问题,让我们直接开始吧

我的最终目标是能够拥有一个基于web的PHP应用程序,允许用户在网络中为用户修改active directory

我发现需要通过Powershell运行命令才能更改active directory中的用户密码

下面是我当前的设置:

有一台主服务器安装了IIS,web应用程序位于其中。 将有多台计算机连接到网络,这些计算机导航到网站并执行这些命令 我已尝试添加代码:

$query = shell_exec('Import-Module ActiveDirectory');
$query = shell_exec('$newpwd = ConvertTo-SecureString -String "'.$safe_password.'" -AsPlainText –Force');
$query = shell_exec('Set-ADAccountPassword "'.$safe_username.'" -NewPassword $newpwd –Reset');
下面是我的问题:

1一旦计算机运行该页面并执行了这些命令,这些命令是否将在主服务器中执行?安装powershell并授予权限的位置。如果没有,我的整个应用程序将无法工作,是否有其他解决方案

2这些命令都是powershell命令,而不是cmd.exe命令。shell_exec甚至在powershell中运行这些命令,或者只是在cmd.exe中运行。如果它只在cmd中运行,那么这将不起作用,我如何使它通过powershell运行


如果您能回答并帮助我,我将不胜感激,非常感谢。

在您的PowerShell中设置如下参数:

Param([string]$username, [string]$password)
shell_exec("powershell.exe " . $psscriptpath . " -username \"" . $username . "\" -password \"" . $password . "\"");
然后按如下方式调用脚本:

Param([string]$username, [string]$password)
shell_exec("powershell.exe " . $psscriptpath . " -username \"" . $username . "\" -password \"" . $password . "\"");

是的,这些命令将在服务器上执行。不,它们不会与shell_exec一起工作,我建议编写一个PowerShell脚本并向其传递参数,然后调用PowerShell.exe-File script.ps1。。来自shell_exec。TBH,我肯定有php库可以做到这一点,但不确定您在这里采用的是最佳方法。@arco444我如何将参数传递到powershell脚本中?因为用户名/密码每次都会不同。这就是为什么要使用参数。。。您有一个脚本,其中包含处理密码重置的逻辑,并将变量作为参数传递。我建议您阅读一下powershell脚本。见@arco444我知道。。我问你如何将参数从php传递到脚本中?我在第一条评论中解释了这一点。您需要使用-username abc-password 123参数等扩展它。。。显然,在您的场景中,abc和123将是$safe_用户名和$safe_密码