- forum
- PowerShell
- Entraide pour les débutants
- Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom
Question
Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 1 an 1 mois #32770
par Julien
Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom a été créé par Julien
Bonjour,
Je souhaite récupérer la liste de tous les utilisateurs de plusieurs OU identifiées et extraire cette liste dans un CSV avec plusieurs propriétés renseignées pour chaque utilisateur. Jusqu'à là, pas de problème.
Mon problème commence lorsque je souhaite ajouter une propriété custom, nommée "Option Masquée", pour chaque utilisateur de la liste obtenue ci-dessus.
Je ne sais pas comment m'y prendre. Je parviens bien à ajouter à utilisateur, dans une boucle, la propriété supplémentaire, mais je ne sais pas comment faire ensuite pour récupérer l'ensemble de ces utilisateurs avec cette nouvelle propriété, dans un CSV en sortie.
Sur mon script actuel, j'ai un message à chaque itération qui m'indique ceci : "Add-Member : Cannot add a member with the name "Option Masquée..." because a member with that name already exists. To overwrite the member anyway, add the Force parameter to your command."
Je vous montre ce que j'ai commencé à écrire :
$Ous= 'OU=AGA-CGAC-GIE,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM' , 'OU=AUTRES,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM' , 'OU=BANQUE,DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM'
$Ous | ForEach-Object {
$NomOU = $_
#Get-ADUser -Filter * -SearchBase $_ -Properties * -server "fiducial.dom" | Select Name,GivenName,Surname,DisplayName,SamAccountName,EmailAddress | Export-Csv -Path \\svlyofic15\stockage\UTILISATEURS\c.bouteloup\UsersFIDUCIALparOUavecdescriptionetBP.csv -Delimiter ";"
$Members = Get-ADUser -Filter * -SearchBase $_ -Properties * -server "fiducial.dom" | Select-Object -Property @{Name = 'OU' ; Expression = {$NomOU}}, @{Name = 'class' ; Expression = {$_.objectClass}},sn,sAMAccountName,userPrincipalName,@{Name = 'Expiration' ; Expression = {$_.AccountExpirationDate}},displayName,@{Name = 'Bureau' ; Expression = {$_.physicalDeliveryOfficeName}},mail,title,department,company,@{Name = 'Ville' ; Expression = {$_.l}},@{Name = 'Sid' ; Expression = {$_.objectSid}},description,@{Name = 'BP' ; Expression = {$_.postOfficeBox}},givenName,employeeNumber
$result = foreach($m in $members){
$OptionMAPI = @()
if ($m.mail -eq "" -or $m.mail -eq $null){
$OptionMAPI="SANS BAL"
}
elseif ($m.msExchHideFromAddressLists -eq $true){
$OptionMAPI="MASQUE"
}
else{
$OptionMAPI="NON MASQUE"
}
$m | Add-Member -MemberType NoteProperty -Name "Option Masquée..." -Value $OptionMAPI
}
$result | Export-Csv -Path \\svlyofic15\stockage\UTILISATEURS\c.bouteloup\UsersFIDUCIALparOUavecdescriptionetBP.csv -Delimiter ";" -NoTypeInformation
}
Merci pour votre aide
Je souhaite récupérer la liste de tous les utilisateurs de plusieurs OU identifiées et extraire cette liste dans un CSV avec plusieurs propriétés renseignées pour chaque utilisateur. Jusqu'à là, pas de problème.
Mon problème commence lorsque je souhaite ajouter une propriété custom, nommée "Option Masquée", pour chaque utilisateur de la liste obtenue ci-dessus.
Je ne sais pas comment m'y prendre. Je parviens bien à ajouter à utilisateur, dans une boucle, la propriété supplémentaire, mais je ne sais pas comment faire ensuite pour récupérer l'ensemble de ces utilisateurs avec cette nouvelle propriété, dans un CSV en sortie.
Sur mon script actuel, j'ai un message à chaque itération qui m'indique ceci : "Add-Member : Cannot add a member with the name "Option Masquée..." because a member with that name already exists. To overwrite the member anyway, add the Force parameter to your command."
Je vous montre ce que j'ai commencé à écrire :
$Ous= 'OU=AGA-CGAC-GIE,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM' , 'OU=AUTRES,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM' , 'OU=BANQUE,DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM'
$Ous | ForEach-Object {
$NomOU = $_
#Get-ADUser -Filter * -SearchBase $_ -Properties * -server "fiducial.dom" | Select Name,GivenName,Surname,DisplayName,SamAccountName,EmailAddress | Export-Csv -Path \\svlyofic15\stockage\UTILISATEURS\c.bouteloup\UsersFIDUCIALparOUavecdescriptionetBP.csv -Delimiter ";"
$Members = Get-ADUser -Filter * -SearchBase $_ -Properties * -server "fiducial.dom" | Select-Object -Property @{Name = 'OU' ; Expression = {$NomOU}}, @{Name = 'class' ; Expression = {$_.objectClass}},sn,sAMAccountName,userPrincipalName,@{Name = 'Expiration' ; Expression = {$_.AccountExpirationDate}},displayName,@{Name = 'Bureau' ; Expression = {$_.physicalDeliveryOfficeName}},mail,title,department,company,@{Name = 'Ville' ; Expression = {$_.l}},@{Name = 'Sid' ; Expression = {$_.objectSid}},description,@{Name = 'BP' ; Expression = {$_.postOfficeBox}},givenName,employeeNumber
$result = foreach($m in $members){
$OptionMAPI = @()
if ($m.mail -eq "" -or $m.mail -eq $null){
$OptionMAPI="SANS BAL"
}
elseif ($m.msExchHideFromAddressLists -eq $true){
$OptionMAPI="MASQUE"
}
else{
$OptionMAPI="NON MASQUE"
}
$m | Add-Member -MemberType NoteProperty -Name "Option Masquée..." -Value $OptionMAPI
}
$result | Export-Csv -Path \\svlyofic15\stockage\UTILISATEURS\c.bouteloup\UsersFIDUCIALparOUavecdescriptionetBP.csv -Delimiter ";" -NoTypeInformation
}
Merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Christophe MELIN
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 1
il y a 1 an 1 mois - il y a 1 an 1 mois #32773
par Christophe MELIN
Réponse de Christophe MELIN sur le sujet Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom
Bonjour,
Peut-être un problème avec l'objet $m du foreach. C'est possiblement toujours le même objet réutilisé à chaque itération. Donc la première exécution de add-member fonctionne mais pas les suivantes.
De plus, je pense que ton export dans un fichier .csv doit être en dehors de la boucle globale.
Essaies le code réécrit ci-dessous :
J'avoue que je n'ai fait aucun test mais je pense que cela devrait aller mieux.
Peut-être un problème avec l'objet $m du foreach. C'est possiblement toujours le même objet réutilisé à chaque itération. Donc la première exécution de add-member fonctionne mais pas les suivantes.
De plus, je pense que ton export dans un fichier .csv doit être en dehors de la boucle globale.
Essaies le code réécrit ci-dessous :
$Ous= @(
'OU=AGA-CGAC-GIE,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM',
'OU=AUTRES,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM',
'OU=BANQUE,DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM'
)
$result = @()
ForEach ($NomOU in $Ous) {
$arrMembers = @( Get-ADUser -Filter * -SearchBase $NomOU -Properties * -server "fiducial.dom" )
foreach($member in $arrMembers) {
$obj = $member | Select-Object -Property @{Name = 'OU' ; Expression = {$NomOU}}, @{Name = 'class' ; Expression = {$_.objectClass}},sn,sAMAccountName,userPrincipalName,@{Name = 'Expiration' ; Expression = {$_.AccountExpirationDate}},displayName,@{Name = 'Bureau' ; Expression = {$_.physicalDeliveryOfficeName}},mail,title,department,company,@{Name = 'Ville' ; Expression = {$_.l}},@{Name = 'Sid' ; Expression = {$_.objectSid}},description,@{Name = 'BP' ; Expression = {$_.postOfficeBox}},givenName,employeeNumber
if ($member.mail -eq "" -or $member.mail -eq $null){
$OptionMAPI="SANS BAL"
} elseif ($member.msExchHideFromAddressLists -eq $true) {
$OptionMAPI="MASQUE"
} else{
$OptionMAPI="NON MASQUE"
}
$obj | Add-Member -MemberType NoteProperty -Name "Option Masquée" -Value $OptionMAPI
$result += $obj
}
}
$result | Export-Csv -Path "\\svlyofic15\stockage\UTILISATEURS\c.bouteloup\UsersFIDUCIALparOUavecdescriptionetBP.csv" -Delimiter ";" -NoTypeInformation
J'avoue que je n'ai fait aucun test mais je pense que cela devrait aller mieux.
Dernière édition: il y a 1 an 1 mois par Christophe MELIN.
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 1 an 1 mois #32774
par Julien
Réponse de Julien sur le sujet Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom
Bonjour Christophe,
Merci beaucoup pour ton aide. Ton script semble marcher parfaitement.
Je rencontre juste une erreur qui ne parait pas être lié à ton script mais plutot à plusieurs nommages d'OUs, sans que je comprenne pourquoi.
J'ai ce message par exemple sur mon OU 'BANQUE' dès que l'OU est passée dans la commande Get-ADuser.
Error : Get-ADUser : La syntaxe du nom de l’objet est incorrecte
J'ai pris le soin de vérifier le nom de l'OU sur l'AD, et elle est bien nommée comme indiqué. Je retrouve cette problématique sur quelques autres OU.
Pour le reste, le script marche parfaitement.
Aurais tu une idée de cette erreur ?
merci encore
Merci beaucoup pour ton aide. Ton script semble marcher parfaitement.
Je rencontre juste une erreur qui ne parait pas être lié à ton script mais plutot à plusieurs nommages d'OUs, sans que je comprenne pourquoi.
J'ai ce message par exemple sur mon OU 'BANQUE' dès que l'OU est passée dans la commande Get-ADuser.
Error : Get-ADUser : La syntaxe du nom de l’objet est incorrecte
J'ai pris le soin de vérifier le nom de l'OU sur l'AD, et elle est bien nommée comme indiqué. Je retrouve cette problématique sur quelques autres OU.
Pour le reste, le script marche parfaitement.
Aurais tu une idée de cette erreur ?
merci encore
Connexion ou Créer un compte pour participer à la conversation.
- Christophe MELIN
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 1
il y a 1 an 1 mois - il y a 1 an 1 mois #32775
par Christophe MELIN
Réponse de Christophe MELIN sur le sujet Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom
Bonjour,
Sur le code, il y a une erreur dans le nom pour BANQUE. Je pense que le nom correct est
Si tu as le moindre doute sur un nom, tu passes par la console Active Directory en activant les fonctionnalités avancées, tu sélectionnes ton OU, avec un clic droit, tu affiches les propriétés et dans l'onglet "Editeur d'attributs", tu vas copier-coller le contenu du champ DistinguishedName
Sur le code
$Ous= @(
'OU=AGA-CGAC-GIE,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM',
'OU=AUTRES,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM',
'OU=BANQUE,DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM'
)
'OU=BANQUE,OU=DIRECTIONS FONCTIONNELLES,DC=FID,DC=DOM'
Si tu as le moindre doute sur un nom, tu passes par la console Active Directory en activant les fonctionnalités avancées, tu sélectionnes ton OU, avec un clic droit, tu affiches les propriétés et dans l'onglet "Editeur d'attributs", tu vas copier-coller le contenu du champ DistinguishedName
Dernière édition: il y a 1 an 1 mois par Christophe MELIN.
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 1 an 4 semaines #32776
par Julien
Réponse de Julien sur le sujet Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom
Bonjour,
Bien vu, j'étais tellement dedans que ça ne m'a pas sauté aux yeux.
Merci beaucoup, ça marche parfaitement.
Bien vu, j'étais tellement dedans que ça ne m'a pas sauté aux yeux.
Merci beaucoup, ça marche parfaitement.
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom
Temps de génération de la page : 0.072 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Lister utilisateurs de plusieurs OU et pour chaque, ajouter une propriété custom