在IIS上使用PHP运行Powershell

在IIS上使用PHP运行Powershell,php,powershell,iis,outlook,fastcgi,Php,Powershell,Iis,Outlook,Fastcgi,PHP代码-: <?php $user = "email@outlook.com"; $script = "C:\\inetpub\\wwwroot\\shell_script\\sc.ps1"; $query = shell_exec("powershell -command $script <nul"); if($query) { echo "Successful" ; } else echo "Failed"; } ?>

PHP代码-:

<?php

    $user = "email@outlook.com";

    $script = "C:\\inetpub\\wwwroot\\shell_script\\sc.ps1";

    $query = shell_exec("powershell -command $script <nul");
     if($query)
{
   echo "Successful" ;
}
else
   echo "Failed";
}
?>
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)

$Mail.To = "email2@outlook.com"
$Mail.Subject = "New Leave Request"
$Mail.Body ="
Dear,

This email contains the body of Email"

$Mail.Send()
我的笔记本电脑上安装了Powershell,Windows 8上安装了Windows Server 2012

我有一个网站托管在Windows Server 2012 IIS上

当我通过命令/sc.ps1在服务器上的命令行上运行powershell脚本sc.ps1时,邮件将发送到Outlook

但是,当我运行带有shell_exec命令的php页面时,邮件不会被触发到outlook,并返回页面,其中包含用php代码编写的Successful消息。 所有工作都是在Windows Server 2012上完成的

在命令行上运行powershell脚本会发送邮件,但当通过powershell运行脚本时,不会触发邮件,只有在shell exec查询运行时才会返回成功。


我已将ExecutionPolicy设置为无限制。

您可能必须在
shell\u exec中传递执行策略:

shell_exec("powershell -executionpolicy unrestricted -command $script <nul");
shell\u exec(“powershell-executionpolicy unrestricted-command$script服务中不能使用Office应用程序(包括Outlook)。(例如IIS)

你的选择是

  • 如果是Exchange服务器,请使用访问邮箱

  • 扩展MAPI(仅限C++或Delphi)

  • (任何语言)-它包装扩展MAPI及其RDO系列对象,可从服务中使用


  • Microsoft目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在该环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁

    如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件进行无人值守的执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的Office应用程序,那么该应用程序将缺少许多e成功运行所必需的功能。此外,您将面临整体解决方案稳定性的风险。请阅读MSDN文章中的更多信息


    作为一种解决方法,您可以使用支持这种场景的低级API扩展MAPI,或者仅使用该API周围的任何其他第三方包装(例如,Redemption).

    我使用了执行策略方法,但我没有提供帮助。您能详细说明我应该如何处理应用程序池的标识吗?您可以尝试将应用程序池的标识设置到您的帐户中,并检查它是否工作。查看它是否工作。我能做的任何其他事情。我正在进行项目的最后阶段。您做了什么是否将网站的应用程序池设置为您的用户帐户标识?我可以在localhost上使用该脚本。它在localhost上运行良好,但在服务器上使用此powershell脚本时不会触发电子邮件