从PHP脚本在另一台服务器上运行Powershell脚本?

从PHP脚本在另一台服务器上运行Powershell脚本?,php,powershell,Php,Powershell,我们公司的系统有两台服务器,一台处理web端脚本,另一台包含所有Active Directory信息。让我们称它们为“webServer”和“adServer” 我在adServer上有一个Powershell(V5)脚本,它返回AD帐户的密码过期日期。我正在Web服务器上编写一个PHP脚本,用户可以在其中输入用户名,然后将该帐户的密码过期日期打印给他们。因此,我需要从这个PHP脚本调用Powershell脚本 我知道您使用shell_exec()在PHP中运行Powershell脚本,但我如何

我们公司的系统有两台服务器,一台处理web端脚本,另一台包含所有Active Directory信息。让我们称它们为“webServer”和“adServer”

我在adServer上有一个Powershell(V5)脚本,它返回AD帐户的密码过期日期。我正在Web服务器上编写一个PHP脚本,用户可以在其中输入用户名,然后将该帐户的密码过期日期打印给他们。因此,我需要从这个PHP脚本调用Powershell脚本

我知道您使用shell_exec()在PHP中运行Powershell脚本,但我如何在其他服务器上运行脚本?假设C:\pwdDate.ps1是adServer上的文件路径,这就是我现在拥有的全部:

$pwdExpDate = shell_exec('powershell -File C:\pwdDate.ps1 -Username $username');

echo $pwdExpDate

我建议您在第二台计算机上设置[web…]服务,您的PHP应用程序可以请求该服务来运行PowerShell脚本(或执行任何其他需要执行的操作)

这会让你牢牢掌控一切。。。当目标服务器执行诸如管理Active Directory内容之类的“有趣”操作时,一个特别重要的考虑事项。(入侵者希望得到那个服务器…)您不允许任意请求

而且,这要简单得多。PowerShell脚本正由同一台计算机上的进程执行。只有那个脚本可以运行,然后,只能间接地。。。“按请求”。您可以在您创建的服务流程的支持下,轻松处理“该”计算机上的任何并发问题

Microsoft IIS已经提供了必要的“管道”来快速设置和管理(例如SOAP…)服务

您可以使用AD本身来限制授权与其他服务联系的其他计算机(即“web服务器”)


注意:我在这里使用的术语是“服务”,通俗地说。。。松散地。。。不是特别指守护进程。我没有使用Microsoft的正式含义来表示这个词。

我不希望在域控制器上允许使用远程powershell,它会打开一个巨大的攻击面


相反,您可以将添加到Web服务器,然后在本地执行该命令。

这就是我现在所拥有的全部内容
-它不会运行,因为您不能在单个引号字符串中使用$username。有没有理由不使用从PHP到AD的LDAP?互联网上有很多这样的例子。