使用exec for dsadd

时间:2012-11-17 16:49:52

标签: php exec

我在Windows Server 2008上进行编程,我希望有一个WebUI与域名Active Directory进行交互。

我的一个主要问题是我正在使用HTML表单中的dsadd,但这没有成功。我知道我的命令是正确的,我已经在Servers命令行上测试了它

我的代码如下:

    if (isset($_POST['Submit']))
    {
        $DesiredUsername = $_POST['DesiredUsername'];
        $DesiredPassword = $_POST['DesiredPassword'];
        $DU = "{$DesiredUsername}";        // Desired Username
        $OU = "PHPCreatedUsers";          // Domain OU
        $DC1 = "slayerserv";             // Domain Part one 
        $DC2 = "local";                 // Domain Part Two
        $PWD = "{$DesiredPassword}";   // Password
        $ExecScript = 'dsadd user cn=$DesiredUsername,cn=PHPCreatedUsers,dc=slayerserv,dc=local -disabled no -pwd $DesiredPassword -mustchpwd yes';
        exec($ExecScript, $output);
        mysql_query("INSERT INTO addedusers (`ID`, `DU`, `OU`, `DC1`, `DC2, `PWD`) 
                    VALUES ('', '$DU', '$OU', '$DC1', '$DC2', '$PWD')");
        echo "<br><br>";
        print_r($output);

    #   echo "User: $DesiredUsername Has been Created";
    }

当我print_r($ output);它返回一个空白数组:

  

Array()

有人能为我提供解决方案或指出我正确的方向吗?

++++

下面是我使用exec

的一个工作示例
        $Script = 'ping 127.0.0.1 -n 1';
    exec($Script, $Output);
    print_r($Output);

的print_r($输出);给出:

  

数组([0] =&gt; [1] =&gt;使用32字节数据对127.0.0.1进行Ping操作:[2] =&gt;从127.0.0.1回复:bytes = 32 time&lt; 1ms TTL = 128 [3 ] =&gt; [4] =&gt; Ping统计数据为127.0.0.1:[5] =&gt;数据包:已发送= 1,已接收= 1,已丢失= 0(0%丢失),[6] =&gt;近似轮以毫秒为单位的跳闸时间:[7] =&gt;最小值= 0ms,最大值= 0ms,平均值= 0ms)

1 个答案:

答案 0 :(得分:0)

事实证明,从PHP运行dsadd存在问题,原来将用户保存到PHPCreatedUsers的OU失败。

我更改了该行以将创建的用户保存到“用户”的默认OU中,并且它可以正常工作。