Question
[EDIT]Script de MAJ l'AD par des fichiers XML
- Loris
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 14 ans 2 mois #11311
par Loris
[EDIT]Script de MAJ l'AD par des fichiers XML a été créé par Loris
EDIT : Voir plus bas
_______________________
Bonjour,
Je suis débutant en PowerShell et j'ai un problème.
[code:1]$xmldata = [xml] (Get-Content c:\test.xml)
$user = [ADSI] 'LDAP://CN=$xml.data.utilisateur.login, CN=Users, DC=test, DC=local'
$user.Put('sn', $xml.data.utilisateur.prenom)
...
$user.SetInfo()[/code:1]
Donc lorsque je remplace $xml.data.utilisateur.login par un login d'employé qui existe (exemple Employe1) tout se met à jour correctement.
Quand j'affiche mon $xml.data.utilisateur.login il m'affiche bien Employe1.
Mais dans mon code tel qu'elle ca bug ! Il ne lit pas le login apparemment, ou je ne sais pas
Je dois avoir une erreur de synthaxe je pense..
Merci de bien vouloir m'aider
Message édité par: Santa, à: 15/03/12 07:39<br><br>Message édité par: Santa, à: 15/03/12 07:40
_______________________
Bonjour,
Je suis débutant en PowerShell et j'ai un problème.
[code:1]$xmldata = [xml] (Get-Content c:\test.xml)
$user = [ADSI] 'LDAP://CN=$xml.data.utilisateur.login, CN=Users, DC=test, DC=local'
$user.Put('sn', $xml.data.utilisateur.prenom)
...
$user.SetInfo()[/code:1]
Donc lorsque je remplace $xml.data.utilisateur.login par un login d'employé qui existe (exemple Employe1) tout se met à jour correctement.
Quand j'affiche mon $xml.data.utilisateur.login il m'affiche bien Employe1.
Mais dans mon code tel qu'elle ca bug ! Il ne lit pas le login apparemment, ou je ne sais pas
Je dois avoir une erreur de synthaxe je pense..
Merci de bien vouloir m'aider
Message édité par: Santa, à: 15/03/12 07:39<br><br>Message édité par: Santa, à: 15/03/12 07:40
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 14 ans 2 mois #11316
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Problème variable dans LDAP
Bonjour,
Il faut bien comprendre la différence entre simples quotes et doubles quotes.
Ton problème dois en premier lieu venir de cette ligne de code :
[code:1]$user = [ADSI] 'LDAP://CN=$xml.data.utilisateur.login, CN=Users, DC=test, DC=local'[/code:1]
Entre simples quotes, les variables ne sont pas interprétées. Aussi, dans ton cas, il s'agit de la propriété d'un objet.
Une première solution :
[code:1]$login = $xml.data.utilisateur.login
$user = [ADSI] \"LDAP://CN=$Login, CN=Users, DC=test, DC=local\"[/code:1]
Une seconde solution :
[code:1]$user = [ADSI] \"LDAP://CN=$($xml.data.utilisateur.login), CN=Users, DC=test, DC=local\"[/code:1]
Tests et dis nous si cela fonctionne mieux.
@ +
Matthew<br><br>Message édité par: Matthew BETTON, à: 13/03/12 19:56
Il faut bien comprendre la différence entre simples quotes et doubles quotes.
Ton problème dois en premier lieu venir de cette ligne de code :
[code:1]$user = [ADSI] 'LDAP://CN=$xml.data.utilisateur.login, CN=Users, DC=test, DC=local'[/code:1]
Entre simples quotes, les variables ne sont pas interprétées. Aussi, dans ton cas, il s'agit de la propriété d'un objet.
Une première solution :
[code:1]$login = $xml.data.utilisateur.login
$user = [ADSI] \"LDAP://CN=$Login, CN=Users, DC=test, DC=local\"[/code:1]
Une seconde solution :
[code:1]$user = [ADSI] \"LDAP://CN=$($xml.data.utilisateur.login), CN=Users, DC=test, DC=local\"[/code:1]
Tests et dis nous si cela fonctionne mieux.
@ +
Matthew<br><br>Message édité par: Matthew BETTON, à: 13/03/12 19:56
Connexion ou Créer un compte pour participer à la conversation.
- Loris
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 14 ans 2 mois #11320
par Loris
Réponse de Loris sur le sujet Re:Problème variable dans LDAP
La 1ère solution est la bonne ! Ca fonctionne bien, mais on me dit que ma solution n'est pas la seule, il y aurait une solution avec un get qui lit le xml et un set qui entre les données dans l'Active Directory. Je vais essayer de trouver également cette solution !
Merci beaucoup pour votre aide.<br><br>Message édité par: Santa, à: 14/03/12 07:43
Merci beaucoup pour votre aide.<br><br>Message édité par: Santa, à: 14/03/12 07:43
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 14 ans 2 mois #11321
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Problème variable dans LDAP
Bonjour,
Pourquoi pas un fichier csv plutôt qu'un fichier xml ?
Une méthode décrite dans cette présentation de PowerShell (Microsoft TechDays 2011 / Arnaud PETITJEAN et Jacques BARATHON).
Voir notamment vers la 49 ème / 50 ème minute. Mais je te conseille de tout regarder car toute la session est intéressante (et en plus, en Français !).
La Cmdlet 'New-ADUser' accepte l'entrée de pipeline sur ses paramètres. Il suffit simplement que tous les intitulés de colonne, dans ton fichier CSV, correspondent au nom du paramètre attendu.
@ +
Matthew
Pourquoi pas un fichier csv plutôt qu'un fichier xml ?
Une méthode décrite dans cette présentation de PowerShell (Microsoft TechDays 2011 / Arnaud PETITJEAN et Jacques BARATHON).
Voir notamment vers la 49 ème / 50 ème minute. Mais je te conseille de tout regarder car toute la session est intéressante (et en plus, en Français !).
La Cmdlet 'New-ADUser' accepte l'entrée de pipeline sur ses paramètres. Il suffit simplement que tous les intitulés de colonne, dans ton fichier CSV, correspondent au nom du paramètre attendu.
@ +
Matthew
Connexion ou Créer un compte pour participer à la conversation.
- Loris
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 14 ans 2 mois #11322
par Loris
Réponse de Loris sur le sujet Re:Problème variable dans LDAP
Et bien en faite j'ai une page intranet sur un web serveur qui affiche des informations Active Directory de compte clients. On peu y modifier les informations.
Etant donné que je suis en stage, j'ai reçu comme consigne de stocker les modifications dans un fichier XML. Ensuite, créer mon script qui parcourera le répertoire \"xml update\" pour lire les fichiers 1 par 1 et mettre à jour l'Active Directory, mais aussi les déplacer une fois lu dans un répertoire \"archive xml\".
Merci pour la vidéo je vais essayer de la regarder tout de suite !<br><br>Message édité par: Santa, à: 14/03/12 08:22
Etant donné que je suis en stage, j'ai reçu comme consigne de stocker les modifications dans un fichier XML. Ensuite, créer mon script qui parcourera le répertoire \"xml update\" pour lire les fichiers 1 par 1 et mettre à jour l'Active Directory, mais aussi les déplacer une fois lu dans un répertoire \"archive xml\".
Merci pour la vidéo je vais essayer de la regarder tout de suite !<br><br>Message édité par: Santa, à: 14/03/12 08:22
Connexion ou Créer un compte pour participer à la conversation.
- Loris
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 14 ans 2 mois #11327
par Loris
Réponse de Loris sur le sujet Re:Problème variable dans LDAP
Donc j'ai modifié mon code
[code:1]$i = (Dir \\Win-webserver\m\*.xml).Count
For($j=0; $j -lt $i; $j++)
{
$tableauFichiers = Get-Childitem \\Win-Webserver\m\*.xml
$plusAncien = get-date
foreach ($tmp in $tableauFichiers)
{
if ([system.dateTime]::Compare($tmp.CreationTime, $plusAncien) -lt 0)
{
$plusVieuxFichier = $tmp;
$plusAncien = $plusVieuxFichier.CreationTime
}
}
$nom = $plusVieuxFichier.Name
$xmldata = [xml] (Get-Content \\Win-Webserver\m\$nom)
$login = $xmldata.utilisateur.login
$user = [ADSI] \"LDAP://CN=$login, CN=Users, DC=solidaris, DC=local\"
$user.Put('sn', $xmldata.utilisateur.nom)
$user.Put('givenName', $xmldata.utilisateur.prenom)
$user.Put('telephoneNumber', $xmldata.utilisateur.telephone)
$user.Put('mail', $xmldata.utilisateur.email)
$user.Put('company', $xmldata.utilisateur.companie)
$user.Put('department', $xmldata.utilisateur.departement)
$user.Put('Description', $xmldata.utilisateur.description)
$user.SetInfo()
Move-Item \\Win-Webserver\m\$nom c:\archive_xml
}[/code:1]
Je voudrais procéder comme cela :
1) Compter nombres d'éléments présent dans le dossier
2) Exécutez une boucle qui se répète autant de fois qu'il y a d'élements
3) Sélectionner le fichier le plus ancien dans le dossier
4) Mettre à jour dans l'Active Directory le fichier XML le plus ancien
5) Déplacer le fichier XML dans un dossier archive_xml
Mais il y a un problème.. si vous pouvez m'aider merci
Message édité par: Santa, à: 14/03/12 14:38<br><br>Message édité par: Santa, à: 14/03/12 15:23
[code:1]$i = (Dir \\Win-webserver\m\*.xml).Count
For($j=0; $j -lt $i; $j++)
{
$tableauFichiers = Get-Childitem \\Win-Webserver\m\*.xml
$plusAncien = get-date
foreach ($tmp in $tableauFichiers)
{
if ([system.dateTime]::Compare($tmp.CreationTime, $plusAncien) -lt 0)
{
$plusVieuxFichier = $tmp;
$plusAncien = $plusVieuxFichier.CreationTime
}
}
$nom = $plusVieuxFichier.Name
$xmldata = [xml] (Get-Content \\Win-Webserver\m\$nom)
$login = $xmldata.utilisateur.login
$user = [ADSI] \"LDAP://CN=$login, CN=Users, DC=solidaris, DC=local\"
$user.Put('sn', $xmldata.utilisateur.nom)
$user.Put('givenName', $xmldata.utilisateur.prenom)
$user.Put('telephoneNumber', $xmldata.utilisateur.telephone)
$user.Put('mail', $xmldata.utilisateur.email)
$user.Put('company', $xmldata.utilisateur.companie)
$user.Put('department', $xmldata.utilisateur.departement)
$user.Put('Description', $xmldata.utilisateur.description)
$user.SetInfo()
Move-Item \\Win-Webserver\m\$nom c:\archive_xml
}[/code:1]
Je voudrais procéder comme cela :
1) Compter nombres d'éléments présent dans le dossier
2) Exécutez une boucle qui se répète autant de fois qu'il y a d'élements
3) Sélectionner le fichier le plus ancien dans le dossier
4) Mettre à jour dans l'Active Directory le fichier XML le plus ancien
5) Déplacer le fichier XML dans un dossier archive_xml
Mais il y a un problème.. si vous pouvez m'aider merci
Message édité par: Santa, à: 14/03/12 14:38<br><br>Message édité par: Santa, à: 14/03/12 15:23
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [EDIT]Script de MAJ l'AD par des fichiers XML