2017-10-20 3 views
0

J'essaie d'afficher les utilisateurs AD sous forme de liste déroulante dans la page HTML.Afficher les utilisateurs AD en tant que liste déroulante dans la page HTML

Voici le code que j'ai écrit en HTML pour créer des listes déroulantes:

<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> 

Voici le code que je peux utiliser pour obtenir tous les noms d'utilisateur Active AD:

$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 
} 

Mais, comment puis-je intégrer les deux codes, de sorte que mon menu déroulant HTML est rempli dynamiquement avec les noms d'utilisateur AD?

Toute aide sera appréciée.

+0

puis-je demander pour le champ dans votre $ userName afin que je puisse obtenir exactement les valeurs – Miggy

+0

Ses noms d'utilisateur par ex. Prénom Nom –

+0

Comment cela est-il implémenté, exécutez-vous le script powershell à partir de PHP ou générez-vous des pages HTML/PHP à partir de Powershell? plus de perspicacité serait utile. – SteloNLD

Répondre

0

vous pourriez essayer d'utiliser foreach dans votre code html. si c'est au format php, c'est mieux.

<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

Il existe plusieurs façons d'accomplir ceci. Si vous voulez exécuter le script PowerShell et lire la sortie avec PHP, vous pouvez à cela avec:

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

Cela exige que votre script écrit dans le flux de sortie standard. Vous devrez donc remplacer Write-Host par Write-Output. Vous pouvez ensuite itérer sur les lignes au $output pour générer la liste déroulante.

Mais probablement vous ne voulez pas interroger votre AD chaque fois que la page est chargée. Si tel est le cas, vous pouvez planifier l'exécution du script PowerShell toutes les heures et écrire la sortie dans un fichier texte ou une base de données qui est ensuite lu par PHP. Si vous souhaitez exporter les utilisateurs vers un fichier texte:

$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 

Vous pouvez ensuite lire le fichier texte à partir de PHP, ce qui réduit le temps de chargement de la page.