Question
Problème de tableau
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 3 mois #25041
par Philippe
Réponse de Philippe sur le sujet Re:Problème de tableau
je te donne le script tel que je l'ai refait pour faire les tests
j'avais enlever des boucle en trop et corriger quelques erreurs de frappes
et vue que un commentaire indiquer OU et sous OU j'ai modifier en conséquence !
j'ai tester sur mon AD et ça donne bien
test le code et dis moi !!
[code:1]Import-Module ActiveDirectory
Import-Module GroupPolicy
$Domaine = \"patrice.lan\"
$OUs = \"OU=Users,OU=Test,DC=Patrice,DC=lan\"
# Récupération de toutes les OUs + Sous OUs #
$NomGpos = Get-ADOrganizationalUnit -SearchBase $OUs -SearchScope Subtree -Server $Domaine -Filter * | foreach {
$OU = $_.DistinguishedName
# Récupération des GPOs liés à ces OUs #
(Get-GPInheritance -Target $OU -Domain $Domaine).GpoLinks | foreach {
$_.DisplayName | foreach {Get-GPO -Name $_ -Domain $Domaine} | foreach {
if ($_.GetSecurityInfo()) {
$Item = $_
$NomGpo = $_.DisplayName
$Status = $_.GpoStatus
$_.GetSecurityInfo() | foreach {
$GrpsExclu = $null
$GrpsApply = $null
if ($_.Permission -eq \"GpoCustom\"«») {
$GrpsExclu = $_.Trustee.Name
}
elseif ($_.Permission -eq \"GpoApply\"«») {
$GrpsApply = $_.Trustee.Name
}
if (($_.Permission -eq \"GpoCustom\"«») -or ($_.Permission -eq \"GpoApply\"«»)) {
$objet = New-Object Psobject
$objet | Add-Member -Name \"OU\" -MemberType 'NoteProperty' -value $OU
$objet | Add-Member -Name \"GPO\" -MemberType 'NoteProperty' -value $NomGpo
$objet | Add-Member -Name \"Groupes Apply\" -MemberType 'NoteProperty' -value $GrpsApply
$objet | Add-Member -Name \"Groupes Exclus\" -MemberType 'NoteProperty' -value $GrpsExclu
$objet
}
}
}
}
}
}
$NomGpos[/code:1]
j'avais enlever des boucle en trop et corriger quelques erreurs de frappes
et vue que un commentaire indiquer OU et sous OU j'ai modifier en conséquence !
j'ai tester sur mon AD et ça donne bien
test le code et dis moi !!
[code:1]Import-Module ActiveDirectory
Import-Module GroupPolicy
$Domaine = \"patrice.lan\"
$OUs = \"OU=Users,OU=Test,DC=Patrice,DC=lan\"
# Récupération de toutes les OUs + Sous OUs #
$NomGpos = Get-ADOrganizationalUnit -SearchBase $OUs -SearchScope Subtree -Server $Domaine -Filter * | foreach {
$OU = $_.DistinguishedName
# Récupération des GPOs liés à ces OUs #
(Get-GPInheritance -Target $OU -Domain $Domaine).GpoLinks | foreach {
$_.DisplayName | foreach {Get-GPO -Name $_ -Domain $Domaine} | foreach {
if ($_.GetSecurityInfo()) {
$Item = $_
$NomGpo = $_.DisplayName
$Status = $_.GpoStatus
$_.GetSecurityInfo() | foreach {
$GrpsExclu = $null
$GrpsApply = $null
if ($_.Permission -eq \"GpoCustom\"«») {
$GrpsExclu = $_.Trustee.Name
}
elseif ($_.Permission -eq \"GpoApply\"«») {
$GrpsApply = $_.Trustee.Name
}
if (($_.Permission -eq \"GpoCustom\"«») -or ($_.Permission -eq \"GpoApply\"«»)) {
$objet = New-Object Psobject
$objet | Add-Member -Name \"OU\" -MemberType 'NoteProperty' -value $OU
$objet | Add-Member -Name \"GPO\" -MemberType 'NoteProperty' -value $NomGpo
$objet | Add-Member -Name \"Groupes Apply\" -MemberType 'NoteProperty' -value $GrpsApply
$objet | Add-Member -Name \"Groupes Exclus\" -MemberType 'NoteProperty' -value $GrpsExclu
$objet
}
}
}
}
}
}
$NomGpos[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- PatriceLT
- Auteur du sujet
- Visiteur
-
il y a 8 ans 3 mois #25042
par PatriceLT
Réponse de PatriceLT sur le sujet Re:Problème de tableau
Hello 6ratgus,
Effectivement ton code est beaucoup plus lisible que le miens.
J'ai toujours la même chose, doublon de nom GPO avec pour l'une, un groupe appliqué ok, et un groupe exclu vide. pour le même nom de gpo sur une autre ligne, j'ai un groupe appliqué vide, et un groupe d'exclusion ok.
Je pense donc que le problème vient du fait de foreach sur toutes les GPOs, qu'il récupère pour chaqu'une, soit le groupe apply si il existe, soit le groupe custom si il existe, et si l'un d'eux n'existe pas, il le met.
Ce que je ne comprend pas, c'est que du coup, il ne prend pas les tests if la ou il devrait faire le test et récupérer une valeur mais qu'il ne devrait pas me mettre de valeur vide (j'ai rajouté un paramètre dans chaque if à savoir que le groupe ou le trustee.name -ne $null.
Mais toujours pareil, même résultat.
Aurais-tu une idée sur la question ? Je vais regarder de mon côté à savoir, si pour chaque gpo, je peux pas fusionner.
Effectivement ton code est beaucoup plus lisible que le miens.
J'ai toujours la même chose, doublon de nom GPO avec pour l'une, un groupe appliqué ok, et un groupe exclu vide. pour le même nom de gpo sur une autre ligne, j'ai un groupe appliqué vide, et un groupe d'exclusion ok.
Je pense donc que le problème vient du fait de foreach sur toutes les GPOs, qu'il récupère pour chaqu'une, soit le groupe apply si il existe, soit le groupe custom si il existe, et si l'un d'eux n'existe pas, il le met.
Ce que je ne comprend pas, c'est que du coup, il ne prend pas les tests if la ou il devrait faire le test et récupérer une valeur mais qu'il ne devrait pas me mettre de valeur vide (j'ai rajouté un paramètre dans chaque if à savoir que le groupe ou le trustee.name -ne $null.
Mais toujours pareil, même résultat.
Aurais-tu une idée sur la question ? Je vais regarder de mon côté à savoir, si pour chaque gpo, je peux pas fusionner.
Connexion ou Créer un compte pour participer à la conversation.
- PatriceLT
- Auteur du sujet
- Visiteur
-
il y a 8 ans 3 mois #25043
par PatriceLT
Réponse de PatriceLT sur le sujet Re:Problème de tableau
Je viens de trouver !!!
[code:1]
Import-Module ActiveDirectory
Import-Module GroupPolicy
$Domaine = \"patrice.lan\"
$OUs = \"OU=Users,OU=Test,DC=Patrice,DC=lan\"
# Récupération de toutes les OUs + Sous OUs #
$NomGpos = Get-ADOrganizationalUnit -SearchBase $OUs -SearchScope Subtree -Server $Domaine -Filter * | foreach {
$OU = $_.DistinguishedName
# Récupération des GPOs liés à ces OUs #
(Get-GPInheritance -Target $OU -Domain $Domaine).GpoLinks | foreach {
$_.DisplayName | foreach {Get-GPO -Name $_ -Domain $Domaine} | foreach {
if ($_.GetSecurityInfo()) {
$GrpsExclu = $null
$GrpsApply = $null
$Item = $_
$NomGpo = $_.DisplayName
$Status = $_.GpoStatus
$_.GetSecurityInfo() | foreach {
if ($_.Permission -eq \"GpoCustom\"«») {
$GrpsExclu = $_.Trustee.Name
}
elseif ($_.Permission -eq \"GpoApply\"«») {
$GrpsApply = $_.Trustee.Name
}
}
$objet = New-Object Psobject
$objet | Add-Member -Name \"OU\" -MemberType 'NoteProperty' -value $OU
$objet | Add-Member -Name \"GPO\" -MemberType 'NoteProperty' -value $NomGpo
$objet | Add-Member -Name \"Groupes Apply\" -MemberType 'NoteProperty' -value $GrpsApply
$objet | Add-Member -Name \"Groupes Exclus\" -MemberType 'NoteProperty' -value $GrpsExclu
$objet
}
}
}
}
$NomGpos[/code:1]
En faite il suffisait simplement de descendre d'un cran le PSObject car il le prennait dans la boucle, alors qu'il fallait juste qu'il affiche le résultat.
Pour le reset des Grps, je l'ai remonté d'un cran, et mis au niveau du if($_.GetSecurityInfo()), car sinon il partait dans la boucle foreach avec à chaque fois un reset du groupe.
Message édité par: PatriceLT, à: 22/02/18 11:19<br><br>Message édité par: PatriceLT, à: 22/02/18 11:19
[code:1]
Import-Module ActiveDirectory
Import-Module GroupPolicy
$Domaine = \"patrice.lan\"
$OUs = \"OU=Users,OU=Test,DC=Patrice,DC=lan\"
# Récupération de toutes les OUs + Sous OUs #
$NomGpos = Get-ADOrganizationalUnit -SearchBase $OUs -SearchScope Subtree -Server $Domaine -Filter * | foreach {
$OU = $_.DistinguishedName
# Récupération des GPOs liés à ces OUs #
(Get-GPInheritance -Target $OU -Domain $Domaine).GpoLinks | foreach {
$_.DisplayName | foreach {Get-GPO -Name $_ -Domain $Domaine} | foreach {
if ($_.GetSecurityInfo()) {
$GrpsExclu = $null
$GrpsApply = $null
$Item = $_
$NomGpo = $_.DisplayName
$Status = $_.GpoStatus
$_.GetSecurityInfo() | foreach {
if ($_.Permission -eq \"GpoCustom\"«») {
$GrpsExclu = $_.Trustee.Name
}
elseif ($_.Permission -eq \"GpoApply\"«») {
$GrpsApply = $_.Trustee.Name
}
}
$objet = New-Object Psobject
$objet | Add-Member -Name \"OU\" -MemberType 'NoteProperty' -value $OU
$objet | Add-Member -Name \"GPO\" -MemberType 'NoteProperty' -value $NomGpo
$objet | Add-Member -Name \"Groupes Apply\" -MemberType 'NoteProperty' -value $GrpsApply
$objet | Add-Member -Name \"Groupes Exclus\" -MemberType 'NoteProperty' -value $GrpsExclu
$objet
}
}
}
}
$NomGpos[/code:1]
En faite il suffisait simplement de descendre d'un cran le PSObject car il le prennait dans la boucle, alors qu'il fallait juste qu'il affiche le résultat.
Pour le reset des Grps, je l'ai remonté d'un cran, et mis au niveau du if($_.GetSecurityInfo()), car sinon il partait dans la boucle foreach avec à chaque fois un reset du groupe.
Message édité par: PatriceLT, à: 22/02/18 11:19<br><br>Message édité par: PatriceLT, à: 22/02/18 11:19
Connexion ou Créer un compte pour participer à la conversation.
- PatriceLT
- Auteur du sujet
- Visiteur
-
il y a 8 ans 3 mois #25046
par PatriceLT
Réponse de PatriceLT sur le sujet Re:Problème de tableau
J'ai un dernier petit truc à demander, et après promis, j'arrête 
Après avoir obtenu le résultat escompté, il s'avère que j'ai plusieurs groupes dans une seule colonne, j'ai donc été obligé de créer un tableau pour mes 2 variables :
$GrpsApply = $null
$GrpsExclu = $null
$GrpsApply = @()
$GrpsExclu = @()
Tout fonctionne, sauf que je me retrouve avec un tableau en résultat, pour mes groupes, et donc pour l'exploitation en csv, c'est pas top.
J'ai test de faire un Select-Object, car ma variable finale est de type object.
Mais aucun résultat probant. Du coup j'ai bien tout mes groupes, sauf que ces satanés \"{\" \"}\" sont inexploitable.
Auriez-vous une solution ? J'avais penser à forcer le type en String, mais du coup je ne sais pas si cela fonctionnera.
Merci par avance !
Après avoir obtenu le résultat escompté, il s'avère que j'ai plusieurs groupes dans une seule colonne, j'ai donc été obligé de créer un tableau pour mes 2 variables :
$GrpsApply = $null
$GrpsExclu = $null
$GrpsApply = @()
$GrpsExclu = @()
Tout fonctionne, sauf que je me retrouve avec un tableau en résultat, pour mes groupes, et donc pour l'exploitation en csv, c'est pas top.
J'ai test de faire un Select-Object, car ma variable finale est de type object.
Mais aucun résultat probant. Du coup j'ai bien tout mes groupes, sauf que ces satanés \"{\" \"}\" sont inexploitable.
Auriez-vous une solution ? J'avais penser à forcer le type en String, mais du coup je ne sais pas si cela fonctionnera.
Merci par avance !
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 3 mois #25048
par Philippe
dans ton cas je ne ferais pas de tableau j'initialiserais en string :
$GrpsApply = \"\"
puis dans la boucle ferais un ajout comme ça :
$GrpsApply += $_.Trustee.Name + \", \"
Réponse de Philippe sur le sujet Re:Problème de tableau
on est la pour ça !!J'ai un dernier petit truc à demander, et après promis, j'arrête
c'est un problème courant et pourtant qui s'étudie pour chaque casTout fonctionne, sauf que je me retrouve avec un tableau en résultat, pour mes groupes, et donc pour l'exploitation en csv, c'est pas top.
dans ton cas je ne ferais pas de tableau j'initialiserais en string :
$GrpsApply = \"\"
puis dans la boucle ferais un ajout comme ça :
$GrpsApply += $_.Trustee.Name + \", \"
Connexion ou Créer un compte pour participer à la conversation.
- PatriceLT
- Auteur du sujet
- Visiteur
-
il y a 8 ans 3 mois #25049
par PatriceLT
Réponse de PatriceLT sur le sujet Re:Problème de tableau
Merci 6ratgus,
Je viens de tester, cela fonctionne en partit.
En gros, ça me sépare bien mes différents groupes dans la même colonne, lorsqu'ils sont plusieurs.
Cependant, j'ai le problème du dernier caractère qui lui aussi est une \",\".
Du coup, soit je met : $GrpsXXXX += $_.Trustee.Name + \" \" ou soit je fais un -split, car j'ai essayé en TrimEnd, mais ça ne fonctionne pas comme je l'espérais, j'ai essayé avec le remplacement du dernier caractère via le [-1], mais toujours la même chose.
Je viens de tester, cela fonctionne en partit.
En gros, ça me sépare bien mes différents groupes dans la même colonne, lorsqu'ils sont plusieurs.
Cependant, j'ai le problème du dernier caractère qui lui aussi est une \",\".
Du coup, soit je met : $GrpsXXXX += $_.Trustee.Name + \" \" ou soit je fais un -split, car j'ai essayé en TrimEnd, mais ça ne fonctionne pas comme je l'espérais, j'ai essayé avec le remplacement du dernier caractère via le [-1], mais toujours la même chose.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.040 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Problème de tableau