2017-10-20 127 views
0

我试图将AD用户显示为HTML页面中的下拉列表。将AD用户显示为HTML页面中的下拉列表

以下是我在HTML写的创建下拉列表代码:

<h3>Search Account</h3> 
<form> 
    <legend>Select the username from below list</legend> 
    <p> 
    <label>Select list</label> 
    <select id = "myList"> 
     <option value = "1">one</option> 
     <option value = "2">two</option> 
    </select> 
    </p> 
</form> 

以下是代码,我可以用它来获取所有有效的广告用户名:

$users = Get-ADUser -Filter * -SearchBase "OU=User_Accounts,DC=test,DC=local" -Properties * | Where-Object {$_.UserAccountControl -eq 0x200} | Select-Object Name 

foreach ($user in $users) { 
    $userName = $user.Name 
    Write-Host $userName 
} 

但是,我怎么能整合这两个代码,以便我的HTML下拉菜单动态填充AD用户名?

任何帮助将不胜感激。

+0

我可以在您的'$ userName'中请求该字段,以便我可以准确获得值 – Miggy

+0

其用户名例如名字姓氏 –

+0

这是如何实现的,你是从PHP执行powershell脚本还是从Powershell生成HTML/PHP页面?更多的见解将会有所帮助。 – SteloNLD

回答

0

你可以尝试在你的html中使用foreach。如果它是在PHP格式,那么它更好。

<select id = "myList" name = "users"> 
    <?php foreach ($userName as $user): ?> 
     <option value = "<?php echo $user['firstName'].' '.$user['lastName'];?>"><?php echo $user['name'];?></option> 
    <?php endforeach ?> 
    </select> 
0

有多种方法可以实现这一点。如果你想与执行PowerShell脚本和阅读用PHP输出你可以说:

$output = shell_exec("powershell.exe path/to/myscript.ps1"); 

这需要你的脚本写到标准输出流。因此,您必须将Write-Host替换为Write-Output。然后,您可以迭代$output中的行以生成下拉列表。

但是,当页面加载时,可能你不想查询你的AD。如果是这种情况,您可能需要计划PowerShell脚本每小时运行一次,然后将输出写入文本文件或数据库,然后由PHP读取。如果你想给用户导出到一个文本:

$users = Get-ADUser -Filter * -SearchBase "OU=User_Accounts,DC=test,DC=local" -Properties * | 
    Where-Object {$_.UserAccountControl -eq 0x200} | 
    Select-Object Name | 
    Out-File "path/to/file.txt" -Encoding UTF8 

然后,您可以读取PHP的文本文件,减少了页面加载时间。