Question
aide pour corriger script AD
- garrigues
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30537
par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
Bonsoir Laurent, j'ai un peu moins de temps pour tenter de trouver une solution mais je cherche encore.
J'ai tenter de faire la comparaison avec le compare-object comme tu me l'as indiqué et avec les infos que j'ai pû trouver sur le net.
je suis arrivé a ce bout de script qui me trouve bien une différence mais je n'arrive pas à afficher clairement le résultat de cette différence .Le résultat de la comparaison me montre bien que mes techniciens ne sont pas présents car à l'écran la commande m'affiche tout les groupes ainsi que les autres utilisateurs sauf eux.
J'ai tenté plusieurs options mais aucunes n'a marché pour n'avoir que les différences entre mon csv et les membres de mes groupes AD.
Pourtant il me semblait avoir compris que par défaut le compare-object ne retournait que les différences donc quelques chose m'échape encore la-dessus.
Je n'arrive pas du coup à exploiter le résultat de la comparaison pour indiquer au script de n'intégrer que les choses différentes (mettre mes techniciens dans leurs groupes...).
Peut être qu'en regardant ce que j'ai tenté, tu verra avec ton expérience ce qui ne va pas car moi avec mon expérience des choses qui ne marchent pas comme je veux je ne comprends pas ce qui coince .
Merci encore pour ton aide qui jusqu'ici m'a été précieuse.
J'ai tenter de faire la comparaison avec le compare-object comme tu me l'as indiqué et avec les infos que j'ai pû trouver sur le net.
je suis arrivé a ce bout de script qui me trouve bien une différence mais je n'arrive pas à afficher clairement le résultat de cette différence .
$csv= $(get-content -path "C:\users-domjacom.csv" -delimiter ";"| where { $_.GroupePrincipal -contains $_.SamAccountName })
$memb=$(Get-ADGroup -Filter "*" | where { $_.Name -match "gg-*"} |select -ExpandProperty name {name=$groups}
foreach ($Group in $groups) {Get-ADGroupMember $($Group.Name)})
compare-object -referenceobject $(get-content -path "C:\users-domjacom.csv" -delimiter ";"| where { $_.GroupePrincipal -contains $_.SamAccountName }) -differenceobject $(Get-ADGroup -Filter "*" | where { $_.Name -match "gg-*"} |select -ExpandProperty name {name=$groups}
foreach ($Group in $groups) {Get-ADGroupMember $($Group.Name)})
if ($csv -eq $memb)
{
write-host "tout les utilisateurs sont dans leur groupes " -ForegroundColor green
}
else
{
write-host "des utilisateurs ne sont pas dans leurs groupes " -ForegroundColor red
}
J'ai tenté plusieurs options mais aucunes n'a marché pour n'avoir que les différences entre mon csv et les membres de mes groupes AD.
Pourtant il me semblait avoir compris que par défaut le compare-object ne retournait que les différences donc quelques chose m'échape encore la-dessus.
Je n'arrive pas du coup à exploiter le résultat de la comparaison pour indiquer au script de n'intégrer que les choses différentes (mettre mes techniciens dans leurs groupes...).
Peut être qu'en regardant ce que j'ai tenté, tu verra avec ton expérience ce qui ne va pas car moi avec mon expérience des choses qui ne marchent pas comme je veux je ne comprends pas ce qui coince .
Merci encore pour ton aide qui jusqu'ici m'a été précieuse.
Dernière édition: il y a 3 ans 1 mois par garrigues.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30552
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet aide pour corriger script AD
Salut,
ici :
$csv= $(get-content -path "C:\users-domjacom.csv"
c'est import-csv qu'il faut utiliser, enfin si tu cherche à importer des données à partir d'un fichier structuré.
Il ne sert à rien de charger deux fois la même liste :
compare-object -referenceobject $(get-content -path "C:\users-domjacom.csv"
Compare-Object ajoute à chaque objet une propriété SideIndicator et c'est celle-ci que tu dois interroger :
Si on inverse, sideindicator change :
Compare-Object $t $t1
et si on demande les objets présent dans les 2 collections
Compare-Object $t1 $t -IncludeEqual
sideindicator peut prendre une troisième valeur ( <= , = , => )
ici :
$csv= $(get-content -path "C:\users-domjacom.csv"
c'est import-csv qu'il faut utiliser, enfin si tu cherche à importer des données à partir d'un fichier structuré.
Il ne sert à rien de charger deux fois la même liste :
compare-object -referenceobject $(get-content -path "C:\users-domjacom.csv"
Compare-Object ajoute à chaque objet une propriété SideIndicator et c'est celle-ci que tu dois interroger :
$t=@('un','deux','trois')
$t1=@('deux')
Compare-Object $t $t1
#InputObject SideIndicator
#----------- -------------
#un <=
#trois <=
Si on inverse, sideindicator change :
Compare-Object $t $t1
et si on demande les objets présent dans les 2 collections
Compare-Object $t1 $t -IncludeEqual
sideindicator peut prendre une troisième valeur ( <= , = , => )
Tutoriels PowerShell
Dernière édition: il y a 3 ans 1 mois par Laurent Dardenne.
Connexion ou Créer un compte pour participer à la conversation.
- garrigues
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30581
par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
Bonsoir Laurent, merci encore une fois pour ton aide.
J'ai regarder pour le compare-object mais cela ne fonctionnait pas car je n'avais pas de tableau de sorte des objets qui se ressemblaient donc le compare-object trouvait des diférences partout .
En cherchant sur le net j'ai trouver un petit script de récupération de membres de groupes AD et sortie sous forme de tableau.
voici le résultat de la sortie:
ibb.co/ByM4L8w
A partir de sa est après avoir reagerder une vidéo sur le "parsing" je me suis fait le bout de script suivant pour la récupération de mes utilisateurs et groupes csv pour pouvoir comparer les 2 tableaux
il me retourne le résultat suivant:
ibb.co/KhzKCZH
On peut voir que mes techniciens (groupe principal et secondaire) ne sont pas présents sur le tableau de l'AD.
sauf que le compare-object ne voit pas cette diférence majeure entre les 2 tableaux mais il trouve autre chose que je ne m'explique toujours pas:
ibb.co/znH7vCH
Il me met un sideindicator sur des utilisateurs ou il m'a mit un égal juste audessus mais ne voit pas que les membres du groupe technicien ne sont pas présents dans le tableau de l'AD et je n'arrive pas a comprendre d'ou peut venir le problème.
Du coup je suis encore bloqué pour la fin avec l'intégration de mes techniciens dans leur groupe vu que la comparaison ne marche pas comme elle devrait.
Je pensais après avoir réussi à sortir 2 tableaux quazi identques que la comparaison marcherait mais ce n'est pas le cas pour une raison qui m'échape.
Si tu as une idée je suis toujours preuneur .
Merci encore pour ton aide.
J'ai regarder pour le compare-object mais cela ne fonctionnait pas car je n'avais pas de tableau de sorte des objets qui se ressemblaient donc le compare-object trouvait des diférences partout .
En cherchant sur le net j'ai trouver un petit script de récupération de membres de groupes AD et sortie sous forme de tableau.
# crée une liste de tous les groupes dans une UO donnée et stocke les objets dans la variable $ groups
$groups = Get-ADGroup -Filter * -SearchBase 'OU=entreprise-jacom,DC=domjacom,DC=local' -Properties name | select name
#pipe chaque objet de groupe dans une boucle foreach et affiche une valeur de chaîne du même nom de groupe et la stocke dans la variable $ groups_string
$groups_string = $groups | % {$_.name}
# crée une liste de tous les utilisateurs d'une UO donnée et stocke les objets dans la variable $ users
$users = Get-ADUser -Filter * -SearchBase 'OU=entreprise-jacom,DC=domjacom,DC=local'
$results=@{
"Username" = ""
"Groupname" = ""
}
$tableAD=@()
#teste chaque utilisateurs de la variable $users et récupère leurs appartenances aux groupes
foreach ($user in $users) {
# sélectionne chaque nom de groupe et le stocke dans la variable $ groupMembership
$groupMembership = Get-ADPrincipalGroupMembership $user | select name
# compare les noms du groupe de chaque utilisateur au nom du groupe de base.
$groupMembership | foreach ($_) {
#S'il y a une correspondance, ajoutez le nom du groupe et le nom d'utilisateur à la table de hachage $ results
if ($groups_string -contains $_.name) {
$results."Groupname" = $_.name
$results."Username" = $user.Name
# créer un nouvel objet PS et fournir les propriétés de la table de hachage $ results à chaque objet
$objresults = New-Object psobject -Property $results
# ajouter chaque objet au tableau $ table
$tableAD += $objresults
}
}
}
$tableAD
voici le résultat de la sortie:
ibb.co/ByM4L8w
A partir de sa est après avoir reagerder une vidéo sur le "parsing" je me suis fait le bout de script suivant pour la récupération de mes utilisateurs et groupes csv pour pouvoir comparer les 2 tableaux
#chemin du fichier a analiser
$file= "C:\users-domjacom.csv"
#variable contenu du fichier
$text = Get-Content -Path $file
$result= foreach ($currentline in $text){
#separe les infos de la ligne
$infos= $currentline -split ';'
#hashtable
$hashtable= @{
Username= $infos[0]
Groupname =$infos[10]
}
#cree un objet pour chaque infos
New-Object -TypeName PSObject -Property $hashtable | Select-Object -Property Username,Groupname
if (!($infos[11] -eq ([string]::Empty)))
{
$hashtable= @{
Username= $infos[0]
Groupname =$infos[11]
}
New-Object -TypeName PSObject -Property $hashtable | Select-Object -Property Username,Groupname
}
}
$result
il me retourne le résultat suivant:
ibb.co/KhzKCZH
On peut voir que mes techniciens (groupe principal et secondaire) ne sont pas présents sur le tableau de l'AD.
sauf que le compare-object ne voit pas cette diférence majeure entre les 2 tableaux mais il trouve autre chose que je ne m'explique toujours pas:
compare-object $tableAD $result -IncludeEqual
ibb.co/znH7vCH
Il me met un sideindicator sur des utilisateurs ou il m'a mit un égal juste audessus mais ne voit pas que les membres du groupe technicien ne sont pas présents dans le tableau de l'AD et je n'arrive pas a comprendre d'ou peut venir le problème.
Du coup je suis encore bloqué pour la fin avec l'intégration de mes techniciens dans leur groupe vu que la comparaison ne marche pas comme elle devrait.
Je pensais après avoir réussi à sortir 2 tableaux quazi identques que la comparaison marcherait mais ce n'est pas le cas pour une raison qui m'échape.
Si tu as une idée je suis toujours preuneur .
Merci encore pour ton aide.
Dernière édition: il y a 3 ans 1 mois par garrigues.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 1 mois #30584
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet aide pour corriger script AD
salut,
sur ce point :
>>sauf que le compare-object ne voit pas cette différence majeure entre les 2 tableaux mais il trouve autre chose que je ne m'explique toujours pas:
dans la recopie d'écran certains noms sont sans espace d'autres avec, ce n'est donc pas le même nom :
'Nom Prenom' et 'NomPrenom¨'
sur ce point :
>>sauf que le compare-object ne voit pas cette différence majeure entre les 2 tableaux mais il trouve autre chose que je ne m'explique toujours pas:
dans la recopie d'écran certains noms sont sans espace d'autres avec, ce n'est donc pas le même nom :
'Nom Prenom' et 'NomPrenom¨'
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- garrigues
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30585
par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
Re bonjour Laurent, pour l'espace dans le nom je l'avais vu mais sa n'avait pas l'air de lui poser des soucis sauf pour les 7 derniers utilisateurs.
J'ai donc modifier le code pour qu'il m'affiche les prenomnom sans espace
le résultat ressort bien sans espaces
ibb.co/rx2dJd9
mais le compare-object merde encore sur les mêmes noms et ne voit toujours pas que les techniciens sont pas présents...
ibb.co/YTJv2J9
il y a 7 utilisateurs qui devraient être dans le groupe technicien (le compare-object m'indique 9 différences donc sa ne correspond pas, le truc que je comprends pas c'est que les différence qu'il trouve soit disant sont en fait signalées identiques au-dessus...) et il ne m'affiche pas du tout les bons noms qui sont donc différents entre les 2 tableaux
J'ai donc modifier le code pour qu'il m'affiche les prenomnom sans espace
#chemin du fichier a analiser
$file= "C:\users-domjacom.csv"
#variable contenu du fichier
$text = Get-Content -Path $file
$result= foreach ($currentline in $text){
#separe les infos de la ligne
$infos= $currentline -split ';'
#hashtable
$hashtable= @{
Username= $infos[6]
Groupname =$infos[10]
}
#cree un objet pour chaque infos
New-Object -TypeName PSObject -Property $hashtable | Select-Object -Property Username,Groupname
if (!($infos[11] -eq ([string]::Empty)))
{
$hashtable= @{
Username= $infos[6]
Groupname =$infos[11]
}
New-Object -TypeName PSObject -Property $hashtable | Select-Object -Property Username,Groupname
}
}
$result
le résultat ressort bien sans espaces
ibb.co/rx2dJd9
mais le compare-object merde encore sur les mêmes noms et ne voit toujours pas que les techniciens sont pas présents...
ibb.co/YTJv2J9
il y a 7 utilisateurs qui devraient être dans le groupe technicien (le compare-object m'indique 9 différences donc sa ne correspond pas, le truc que je comprends pas c'est que les différence qu'il trouve soit disant sont en fait signalées identiques au-dessus...) et il ne m'affiche pas du tout les bons noms qui sont donc différents entre les 2 tableaux
Dernière édition: il y a 3 ans 1 mois par garrigues.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 1 mois #30607
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet aide pour corriger script AD
Sans jeu de test commun on peut échanger des semaines sur le sujet.
Et sans AD de dev je ne vois pas ce que je peux faire de plus pour t'aider.
Et sans AD de dev je ne vois pas ce que je peux faire de plus pour t'aider.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.098 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- aide pour corriger script AD