Question
Lister des attributs utilisateur dans un CSV
- Flavian
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 14 ans 2 mois #10995
par Flavian
Lister des attributs utilisateur dans un CSV a été créé par Flavian
Bonjour à toute la communauté. 
Je butte actuellement sur un script ayant pour objectif d'extraire certains attributs utilisateurs de l'AD et de les exporter en CSV.
J'ai réalisé le script suivant :
[code:1]function Recup-Admin {
$strFilter = \"(&(objectCategory=User))\"
$objOU = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objOU
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = \"OneLevel\"
$objSearcher.FindAll()
}
Recup-Admin |Foreach {New-Object PSObject -Property @{
Path=$_.Path
Name=$_.Properties.name
Samaccountname=$_.Properties.Samaccountname
UAC=$_.Properties.UserAccountControl
}
}| Export-CSV List.csv -Delimiter \";\"[/code:1]
je n'arrive pas à récupérer dans le CSV le contenu des attributs Name, SamAccountName et UserAccountControl alors que j'arrive à les afficher de façon unitaire en faisant ceci par exemple :
[code:1]function Recup-Admin {
$strFilter = \"(&(objectCategory=User))\"
$objOU = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objOU
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = \"OneLevel\"
$objSearcher.Findone()
}
$toto=Recup-Admin
$toto.Properties.name
$toto.Properties.samaccountname
$toto.Properties.useraccountcontrol[/code:1]
Au mieux dans le CSV s'affiche le nom de la propriété mais pas le contenu...
Après de longues recherches je me décide à poser la question sur le forum car je ne vois pas de solution.
Merci d'avance pour votre aide !
Je butte actuellement sur un script ayant pour objectif d'extraire certains attributs utilisateurs de l'AD et de les exporter en CSV.
J'ai réalisé le script suivant :
[code:1]function Recup-Admin {
$strFilter = \"(&(objectCategory=User))\"
$objOU = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objOU
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = \"OneLevel\"
$objSearcher.FindAll()
}
Recup-Admin |Foreach {New-Object PSObject -Property @{
Path=$_.Path
Name=$_.Properties.name
Samaccountname=$_.Properties.Samaccountname
UAC=$_.Properties.UserAccountControl
}
}| Export-CSV List.csv -Delimiter \";\"[/code:1]
je n'arrive pas à récupérer dans le CSV le contenu des attributs Name, SamAccountName et UserAccountControl alors que j'arrive à les afficher de façon unitaire en faisant ceci par exemple :
[code:1]function Recup-Admin {
$strFilter = \"(&(objectCategory=User))\"
$objOU = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objOU
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = \"OneLevel\"
$objSearcher.Findone()
}
$toto=Recup-Admin
$toto.Properties.name
$toto.Properties.samaccountname
$toto.Properties.useraccountcontrol[/code:1]
Au mieux dans le CSV s'affiche le nom de la propriété mais pas le contenu...
Après de longues recherches je me décide à poser la question sur le forum car je ne vois pas de solution.
Merci d'avance pour votre aide !
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 14 ans 2 mois #11003
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Lister des attributs utilisateur dans un CSV
Salut !
Bienvenu dans le forum
.
Ton probleme est simple: ta fonction Recup-Admin ne renvoie aucun resultat. C'est donc normal que tu n'aies que l'entete dans ton fichier CSV.
Pour gagner du temps, je ne le dirais jamais assez, il faut y aller petit a petit. C'est a dire faire monter son script en puissance, mais pas chercher a tout faire du premier coup.
Mais, bon, je mets ca sur l'excitation de faire du PowerShell. Ce que je comprends aisement !!! LOL
Arnaud
Bienvenu dans le forum
Ton probleme est simple: ta fonction Recup-Admin ne renvoie aucun resultat. C'est donc normal que tu n'aies que l'entete dans ton fichier CSV.
Pour gagner du temps, je ne le dirais jamais assez, il faut y aller petit a petit. C'est a dire faire monter son script en puissance, mais pas chercher a tout faire du premier coup.
Mais, bon, je mets ca sur l'excitation de faire du PowerShell. Ce que je comprends aisement !!! LOL
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Flavian
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 14 ans 2 mois #11004
par Flavian
Réponse de Flavian sur le sujet Re:Lister des attributs utilisateur dans un CSV
Bonjour Arnaud,
Merci pour ta réponse mais je ne comprends pas trop car je t'assure que ma fonction me retourne bien un résultat...
Qu'est-ce qui te fait dire ça ?
Merci pour ta réponse mais je ne comprends pas trop car je t'assure que ma fonction me retourne bien un résultat...
Qu'est-ce qui te fait dire ça ?
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 14 ans 2 mois #11005
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Lister des attributs utilisateur dans un CSV
Excuse moi, j'ai repondu un peu trop vite. Effectivement chez moi ta requete ne me retourne aucun resultat mais je l'ai modifiee un peu et maintenant j'ai pu recuperer quelques objets.
En fait, j'ai decouvert qu'il y a plusieurs problemes:
1. Pour une raison que j'ignore encore, mais qui est probablement due a l'API ADSI, le nom des proprietes est sensible a la casse. Je ne m'en etais jamais rendu compte car je fais souvent des copier/coller des noms de propriete pour eviter toute faute de frappe. Ainsi dans ton cas $_.Properties.Samaccountname est different de $_.Properties.samaccountname ,
2. La construction de ta table de hachage n'etait pas correcte, il faut mettre un point virgule apres chaque couple cle/valeur,
3. Certaines proprietes sont des collections, c'est pourquoi elles apparaissent entre accolade dans la console. Pour en extraire le contenu il faut les convertir en String.
Voila le code qui fonctionne (en tout cas chez moi):
[code:1]
Recup-Admin | Foreach {
New-Object PSObject -Property @{
Path=$_.Path;
Name=[string]($_.Properties.name);
Samaccountname=[string]($_.Properties.samaccountname);
UAC=[string]$_.Properties.useraccountcontrol
}
} | Export-Csv c:/temp/testExportAD.csv -NoTypeInformation[/code:1]
Arnaud<br><br>Message édité par: Arnaud, à: 20/01/12 21:57
En fait, j'ai decouvert qu'il y a plusieurs problemes:
1. Pour une raison que j'ignore encore, mais qui est probablement due a l'API ADSI, le nom des proprietes est sensible a la casse. Je ne m'en etais jamais rendu compte car je fais souvent des copier/coller des noms de propriete pour eviter toute faute de frappe. Ainsi dans ton cas $_.Properties.Samaccountname est different de $_.Properties.samaccountname ,
2. La construction de ta table de hachage n'etait pas correcte, il faut mettre un point virgule apres chaque couple cle/valeur,
3. Certaines proprietes sont des collections, c'est pourquoi elles apparaissent entre accolade dans la console. Pour en extraire le contenu il faut les convertir en String.
Voila le code qui fonctionne (en tout cas chez moi):
[code:1]
Recup-Admin | Foreach {
New-Object PSObject -Property @{
Path=$_.Path;
Name=[string]($_.Properties.name);
Samaccountname=[string]($_.Properties.samaccountname);
UAC=[string]$_.Properties.useraccountcontrol
}
} | Export-Csv c:/temp/testExportAD.csv -NoTypeInformation[/code:1]
Arnaud<br><br>Message édité par: Arnaud, à: 20/01/12 21:57
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Flavian
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 14 ans 1 mois #11011
par Flavian
Réponse de Flavian sur le sujet Re:Lister des attributs utilisateur dans un CSV
Merci Arnaud tu es un chef ! 
Ça fonctionne parfaitement.
j'ai une petite question, comment reconnaître une propriété d'une collection ? Et savoir qu'il faut la convertir en string pour l'afficher ?
De plus pendant mes recherches j'ai trouvé ce bon de code qui est différent du tiens mais qui fonctionne également :
[code:1]Recup-Admin |Select-Object @{e={$_.properties.name};n=\"Nom\"},@{e={$_.properties.samaccountname};n=\"IPN\"},@{e={$_.properties.useraccountcontrol};n=\"UserAccountControl\"}|Export-Csv d:\Public\List_Admins.csv -Delimiter \";\" -NoTypeInformation[/code:1]
Le truc c'est que je l'ai copié/arrangé sans trop en comprendre la syntaxe...
Et je n'ai trouvé nulle part d'explications sur la signifiaction du e= et n=
En saurais-tu plus ?
Ça fonctionne parfaitement.
j'ai une petite question, comment reconnaître une propriété d'une collection ? Et savoir qu'il faut la convertir en string pour l'afficher ?
De plus pendant mes recherches j'ai trouvé ce bon de code qui est différent du tiens mais qui fonctionne également :
[code:1]Recup-Admin |Select-Object @{e={$_.properties.name};n=\"Nom\"},@{e={$_.properties.samaccountname};n=\"IPN\"},@{e={$_.properties.useraccountcontrol};n=\"UserAccountControl\"}|Export-Csv d:\Public\List_Admins.csv -Delimiter \";\" -NoTypeInformation[/code:1]
Le truc c'est que je l'ai copié/arrangé sans trop en comprendre la syntaxe...
Et je n'ai trouvé nulle part d'explications sur la signifiaction du e= et n=
En saurais-tu plus ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.060 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Lister des attributs utilisateur dans un CSV