在IIS上使用PHP的Powershell

时间:2015-01-16 16:24:13

标签: php powershell iis

我有一个文件index.php,它有一个按钮,请求另一个名为script.php的php文件。

此网页托管在运行Windows Server 2012 R2 DTC的本地IIS上。

文件位置为:c:\inetpub\wwwroot

我已经安装了PHP。它运行正常。

如果我在powershell控制台中运行此命令但在从网页调用时没有响应,则能够获取输出 我为32位和64位PowerShell设置了不受限制的执行策略,但仍然没有帮助。

的index.php

<form id="contact-form" method="post" action="script.php">
<input type="submit" class="button orange" name="submit" value="Check Services">
<form>

脚本php

<?php 
$output=shell_exec('powershell.exe "Get-Service"');
echo $output;
?>

当我在浏览器中运行文件索引php时,我收到以下错误消息。

  

Get-Service:无法在计算机上打开服务控制管理器'。'。   此操作可能需要其他权限。在行:1个字符:1 +   Get-Service + ~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:)   [Get-Service],InvalidOperatio nException + FullyQualifiedErrorId:   System.InvalidOperationException,Microsoft.Power   Shell.Commands.GetServiceCommand

对于文件和错误消息,请参考链接 http://cloudbrox.com/o9tj/

1 个答案:

答案 0 :(得分:2)

运行此代码后会得到什么:

<?php 
$output=shell_exec('powershell "[Security.Principal.WindowsIdentity]::GetCurrent()"');
echo $output;
?>

以下是我得到的输出示例,请特别注意名称字段:

AuthenticationType : NTLM
ImpersonationLevel : None
IsAuthenticated    : True
IsGuest            : False
IsSystem           : False
IsAnonymous        : False
Name               : SHADOWFAX\Goyuix

有可能PHP正在使用的帐户没有正确的权限来获取在本地计算机上运行的服务列表。这将帮助您识别该帐户,然后您可以成功评估更改PHP正在使用的帐户和/或授予该帐户相应权限的选项。