Question
Export Données LDAP > Alimentation site annuaire
- Dead
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 70
- Remerciements reçus 2
il y a 8 mois 6 jours - il y a 8 mois 6 jours #34151
par Dead
Export Données LDAP > Alimentation site annuaire a été créé par Dead
Bonjour à tous,
Je cherche une idée pour faire un site web annuaire de mon lab.
J'ai fait ce script qui me permet de remonter les infos que je souhaite:
# Importer le module Active Directory
Import-Module ActiveDirectory
# Définir les chemins des unités d'organisation (OU) spécifiques
$ous = "OU=LAB A,OU=Utilisateurs,DC=lab,DC=dom",
"OU=LAB B OU=Utilisateurs,DC=lab,DC=dom",
"OU=LAB C,OU=Utilisateurs,DC=lab,DC=dom"
# Créer un tableau pour stocker les données
$data = @()
# Parcourir chaque unité d'organisation
foreach ($ou in $ous) {
# Obtenir les utilisateurs de l'unité d'organisation spécifique avec leurs adresses e-mail, numéros de téléphone mobile et fixes
$users = Get-ADUser -Filter * -SearchBase $ou -Properties EmailAddress, MobilePhone, TelephoneNumber
# Parcourir chaque utilisateur dans cette unité d'organisation et ajouter ses informations au tableau
foreach ($user in $users) {
$name = $user.Name
$email = $user.EmailAddress
$mobile = $user.MobilePhone
$telephoneFixe = $user.TelephoneNumber
# Récupérer le nom de l'unité d'organisation
$ouName = $ou.Split(',')[0] -replace 'OU=', ''
# Créer un objet contenant les informations de l'utilisateur avec le nom de l'unité d'organisation
$userData = [PSCustomObject]@{
Name = $name
Email = $email
MobilePhone = $mobile
TelephoneFixe = $telephoneFixe
OU = $ouName
}
# Ajouter l'objet au tableau
$data += $userData
}
}
# Exporter les données dans un fichier CSV avec l'encodage UTF-8
$data | Export-Csv -Path "C:\export_users.csv" -NoTypeInformation -Encoding UTF8
Maintenant, je souhaiterais que les données récoltées dans le csv soient envoyé dans un tableau, pour alimenter ma page web html.
Auriez vous des recommandations, une idée, de comment faire?
Je vous remercie
Je cherche une idée pour faire un site web annuaire de mon lab.
J'ai fait ce script qui me permet de remonter les infos que je souhaite:
# Importer le module Active Directory
Import-Module ActiveDirectory
# Définir les chemins des unités d'organisation (OU) spécifiques
$ous = "OU=LAB A,OU=Utilisateurs,DC=lab,DC=dom",
"OU=LAB B OU=Utilisateurs,DC=lab,DC=dom",
"OU=LAB C,OU=Utilisateurs,DC=lab,DC=dom"
# Créer un tableau pour stocker les données
$data = @()
# Parcourir chaque unité d'organisation
foreach ($ou in $ous) {
# Obtenir les utilisateurs de l'unité d'organisation spécifique avec leurs adresses e-mail, numéros de téléphone mobile et fixes
$users = Get-ADUser -Filter * -SearchBase $ou -Properties EmailAddress, MobilePhone, TelephoneNumber
# Parcourir chaque utilisateur dans cette unité d'organisation et ajouter ses informations au tableau
foreach ($user in $users) {
$name = $user.Name
$email = $user.EmailAddress
$mobile = $user.MobilePhone
$telephoneFixe = $user.TelephoneNumber
# Récupérer le nom de l'unité d'organisation
$ouName = $ou.Split(',')[0] -replace 'OU=', ''
# Créer un objet contenant les informations de l'utilisateur avec le nom de l'unité d'organisation
$userData = [PSCustomObject]@{
Name = $name
Email = $email
MobilePhone = $mobile
TelephoneFixe = $telephoneFixe
OU = $ouName
}
# Ajouter l'objet au tableau
$data += $userData
}
}
# Exporter les données dans un fichier CSV avec l'encodage UTF-8
$data | Export-Csv -Path "C:\export_users.csv" -NoTypeInformation -Encoding UTF8
Maintenant, je souhaiterais que les données récoltées dans le csv soient envoyé dans un tableau, pour alimenter ma page web html.
Auriez vous des recommandations, une idée, de comment faire?
Je vous remercie
Dernière édition: il y a 8 mois 6 jours par Dead.
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 142
- Remerciements reçus 21
il y a 8 mois 5 jours - il y a 8 mois 5 jours #34156
par Fabien
Réponse de Fabien sur le sujet Export Données LDAP > Alimentation site annuaire
Bonjour Dead,
Je pense que le mieux est d'intégrer directement dans le fichier HTML les données afin que le site web s'affiche correctement.
Sinon, tu peux t'inspirer de ce module pour générer une page web directement avec les informations que tu souhaites.
github.com/dakhama-mehdi/Modern_ActiveDirectory
Je pense que le mieux est d'intégrer directement dans le fichier HTML les données afin que le site web s'affiche correctement.
Sinon, tu peux t'inspirer de ce module pour générer une page web directement avec les informations que tu souhaites.
github.com/dakhama-mehdi/Modern_ActiveDirectory
Dernière édition: il y a 8 mois 5 jours par Fabien.
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 142
- Remerciements reçus 21
il y a 8 mois 5 jours #34157
par Fabien
Réponse de Fabien sur le sujet Export Données LDAP > Alimentation site annuaire
Peux-tu me donner le fichier HTML que tu as fait stp pour pouvoir intégrer les variables PowerShell à l'intérieur ?
Connexion ou Créer un compte pour participer à la conversation.
- Dead
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 70
- Remerciements reçus 2
il y a 8 mois 5 jours #34158
par Dead
Réponse de Dead sur le sujet Export Données LDAP > Alimentation site annuaire
Bonjour Fabien,
Voici le contenu de mon fichier HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Annuaire d'entreprises</title>
<script src="code.jquery.com/jquery-3.6.0.min.js">
</head>
<body>
<h1>Annuaire d'entreprises</h1>
<table id="annuaire">
<thead>
<tr>
<th>Nom</th>
<th>Prénom</th>
<th>Email</th>
<th>Numéro fixe</th>
<th>Numéro mobile</th>
</tr>
</thead>
<tbody>
<!-- Les données seront insérées ici -->
</tbody>
</table>
<script>
// Fonction pour charger les données depuis un fichier CSV
function chargerDonneesCsv(url) {
$.ajax({
url: url,
dataType: 'text',
success: function(data) {
var lignes = data.split(/\r?\n|\r/);
var tableBody = $('#annuaire tbody');
tableBody.empty();
for (var i = 1; i < lignes.length; i++) {
var champs = lignes.split(',');
if (champs.length === 5) {
tableBody.append('<tr><td>' + champs[0] + '</td><td>' + champs[1] + '</td><td>' + champs[2] + '</td><td>' + champs[3] + '</td><td>' + champs[4] + '</td></tr>');
}
}
}
});
}
// Charger les données CSV lorsque la page est chargée
$(document).ready(function() {
chargerDonneesCsv('C:\Users\admin\export_users.csv');
});
</script>
</body>
</html>
Cependant, là, les données ne sont pas chargées depuis le .csv
Je vous remercie pour votre aide!
Voici le contenu de mon fichier HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Annuaire d'entreprises</title>
<script src="code.jquery.com/jquery-3.6.0.min.js">
</head>
<body>
<h1>Annuaire d'entreprises</h1>
<table id="annuaire">
<thead>
<tr>
<th>Nom</th>
<th>Prénom</th>
<th>Email</th>
<th>Numéro fixe</th>
<th>Numéro mobile</th>
</tr>
</thead>
<tbody>
<!-- Les données seront insérées ici -->
</tbody>
</table>
<script>
// Fonction pour charger les données depuis un fichier CSV
function chargerDonneesCsv(url) {
$.ajax({
url: url,
dataType: 'text',
success: function(data) {
var lignes = data.split(/\r?\n|\r/);
var tableBody = $('#annuaire tbody');
tableBody.empty();
for (var i = 1; i < lignes.length; i++) {
var champs = lignes.split(',');
if (champs.length === 5) {
tableBody.append('<tr><td>' + champs[0] + '</td><td>' + champs[1] + '</td><td>' + champs[2] + '</td><td>' + champs[3] + '</td><td>' + champs[4] + '</td></tr>');
}
}
}
});
}
// Charger les données CSV lorsque la page est chargée
$(document).ready(function() {
chargerDonneesCsv('C:\Users\admin\export_users.csv');
});
</script>
</body>
</html>
Cependant, là, les données ne sont pas chargées depuis le .csv
Je vous remercie pour votre aide!
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 8 mois 5 jours #34161
par Alastor
Réponse de Alastor sur le sujet Export Données LDAP > Alimentation site annuaire
réponse bête, la commande convertto-html ne peut-elle pas t'aider ?
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 8 mois 5 jours #34162
par Alastor
Réponse de Alastor sur le sujet Export Données LDAP > Alimentation site annuaire
Sinon tu peux t'inspirer de mon script ci-dessous. Un des premiers que j'avais fait, en reprenant un script que j'avais fait en python... je pense que je ne le ferais plus de cette manière aujourd'hui en powershell, mais bon.
Le javascript embarqué permet à la ligne survolée par la souris de changer de couleur et fait la fonction de recherche.
Le javascript embarqué permet à la ligne survolée par la souris de changer de couleur et fait la fonction de recherche.
<#
.SYNOPSIS
Permet la génération d'une page HTML avec javascript de filtre, à partir d'un array d'objet passé en paramètre.
.DESCRIPTION
.EXAMPLE
PS> Export-ObjectToHtml.ps1 -Objects (Get-ADGroupMember -Identity "Admins du Domaine") -Path C:\Scripts\data\export.html -Title "Liste des Admins du domaine" -ExceptProperties SID, ObjectGUID
Génère une table HTML de tous les membres du Groupe "Admins du Domaine", contenant tous les attributs résultant de la commande Get-AdGroupMember comme colonnes, à l'exclusion des attributs SID et ObjectGUID
La table est sauvegardée dans le fichier "C:\Scripts\data\export.html" et le titre affiché de celle-ci est "Liste des Admins du domaine"
.NOTES
Property: Alastor de https://www.powershell-scripting.com/
Licence: Creative Commons CC BY-NC-SA
Author: Alastor
#>
param (
[Parameter(Mandatory)][PSObject[]]
# Un Array d'object, chaque attributs sera une colonne du tabelau HTML
$Objects,
[Parameter(Mandatory)][String]
# Le titre de la page Web
$Title,
[Parameter(Mandatory)][String]
# Le chemin du fichier HTML à créer
$Path,
[Parameter()]
# La liste des Attributs a faire apparaitre dans le table, tous si non précisé
$Properties,
[Parameter()]
# la liste des attributs à ne pas faire apparaitre dans la table, aucun si non précisé
# intervient après application de Properties
$ExceptProperties
)
#==============================================================
# Format HTML
#==============================================================
$HtmlHeader = "<!DOCTYPE html>
<html>
<head>
<meta name=""viewport"" content=""width=device-width, initial-scale=1"">
<style>
* {
box-sizing: border-box;
}
#myInput {
background-image: url('./searchicon.png');
background-position: 10px 10px;
background-repeat: no-repeat;
width: 100%;
font-size: 16px;
padding: 12px 20px 12px 40px;
border: 1px solid #ddd;
margin-bottom: 12px;
}
#myTable {
border-collapse: collapse;
width: 100%;
border: 1px solid #ddd;
font-size: 18px;
}
#myTable th, #myTable td {
text-align: left;
padding: 12px;
}
#myTable tr {
border-bottom: 1px solid #ddd;
}
#myTable tr.header, #myTable tr:hover {
background-color: #f1f1f1;
}
</style>
</head>
<body>
<h2>$Title</h2>
<input type=""text"" id=""myInput"" onkeyup=""myFunction()"" placeholder=""Recherche.."" title=""Type in a name"">
"
$HtmlFooter = "<script>
function myFunction() {
// Declare variables
var input, filter, table, tr, td, i, txtValue, trtd, toShow, tdi;
input = document.getElementById(""myInput"");
filter = input.value.toUpperCase();
table = document.getElementById(""myTable"");
tr = table.getElementsByTagName(""tr"");
// Loop through all table rows, and hide those who don't match the search query
for (i = 1; i < tr.length; i++) {
trtd = tr[i].getElementsByTagName(""td"");
toShow=false;
for (tdi = 0; tdi < trtd.length; tdi++) {
td = tr[i].getElementsByTagName(""td"")[tdi];
txtValue = td.textContent || td.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
toShow=true;
}
}
if (toShow) {
tr[i].style.display = """";
} else {
tr[i].style.display = ""none"";
}
}
}
</script>
</body>
</html>
"
#==============================================================
# on met l'entete HTML dans le fichier de sortie
$HtmlHeader | Out-File $Path
# importe le "type HTML" et outils associés, dont [System.Web.HttpUtility]::HtmlEncode() dont nous avons besoin
Add-Type -AssemblyName System.Web
# Si l'objet est un array
if ((($Objects.GetType()).BaseType).Name -eq "Array") {
# On récupère les attributs
if ($Properties) {
$AllAttributs = ($Objects[0] | Get-Member -MemberType Properties).Name | Where-Object {$_ -in $Properties}
} else {
$AllAttributs = ($Objects[0] | Get-Member -MemberType Properties).Name
}
if ($ExceptProperties) {
$AllAttributs = $AllAttributs | Where-Object {$_ -notin $ExceptProperties}
}
$HtmlTable = "<table id=""myTable"">`n<tr class=""header"">"
# Pour chaque attribut on crée le titre de la table HTML
foreach ($Attribut in $AllAttributs) {
$HtmlTable += "<th>" + $Attribut + "</th>`n"
}
$HtmlTable += "</tr>`n"
# Puis pour chaque objet
foreach ($CurrentObject in $Objects) {
$HtmlTable += "<tr>"
$HtmlTableLine = ""
# puis pour chaque attribut
foreach ($Attribut in $AllAttributs) {
$AttributeName = $Attribut
$AttributeValue = ($CurrentObject).($Attribut)
$HtmlTableLine += "<td>" + [System.Web.HttpUtility]::HtmlEncode($AttributeValue) + "</td>"
}
$HtmlTable += $HtmlTableLine + "`n</tr>`n"
}
$HtmlTable += "</table><br>`n"
$HtmlTable | Out-File $Path -Append
# on ajoute le footer de la page HTML
$HtmlFooter | Out-File $Path -Append
} else {
Write-Error "Erreur de type de Paramètre : un array est attendu !"
}
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.115 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Export Données LDAP > Alimentation site annuaire