Question Problème de tableau

Plus d'informations
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 B)

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
  • 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.

Connexion ou Créer un compte pour participer à la conversation.

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • 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

Connexion ou Créer un compte pour participer à la conversation.

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • 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 :unsure:

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 \&quot;{\&quot; \&quot;}\&quot; 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.

Plus d'informations
il y a 8 ans 3 mois #25048 par Philippe
Réponse de Philippe sur le sujet Re:Problème de tableau

J'ai un dernier petit truc à demander, et après promis, j'arrête

on est la pour ça !!

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.

c'est un problème courant et pourtant qui s'étudie pour chaque cas

dans ton cas je ne ferais pas de tableau j'initialiserais en string :

$GrpsApply = \&quot;\&quot;

puis dans la boucle ferais un ajout comme ça :

$GrpsApply += $_.Trustee.Name + \&quot;, \&quot;

Connexion ou Créer un compte pour participer à la conversation.

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • 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 \&quot;,\&quot;.

Du coup, soit je met : $GrpsXXXX += $_.Trustee.Name + \&quot; \&quot; 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.039 secondes
Propulsé par Kunena