将AD用户显示为HTML页面中的下拉列表
问题描述:
我试图将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用户名?
任何帮助将不胜感激。
答
你可以尝试在你的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>
答
有多种方法可以实现这一点。如果你想与执行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的文本文件,减少了页面加载时间。
我可以在您的'$ userName'中请求该字段,以便我可以准确获得值 – Miggy
其用户名例如名字姓氏 –
这是如何实现的,你是从PHP执行powershell脚本还是从Powershell生成HTML/PHP页面?更多的见解将会有所帮助。 – SteloNLD