Question
Get-ADGRoupMember
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 9 ans 8 mois #22020
par Philippe
Réponse de Philippe sur le sujet Re:Get-ADGRoupMember
a tu une colonnes users dans Classeur1.csv ?
sinon il faut que tu renomme l'attribut dans le script !!!
sur cette ligne : $members = $item.Users
il est aussi possible qu'un groupe n'existe pas dans l'AD !<br><br>Message édité par: 6ratgus, à: 28/06/16 12:18
sinon il faut que tu renomme l'attribut dans le script !!!
sur cette ligne : $members = $item.Users
il est aussi possible qu'un groupe n'existe pas dans l'AD !<br><br>Message édité par: 6ratgus, à: 28/06/16 12:18
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 9 ans 8 mois #22021
par Philippe
Réponse de Philippe sur le sujet Re:Get-ADGRoupMember
une solution pour le cas ou un groupe n'existe pas dans l'ad
tu ce code :
[code:1](Get-ADObject -Filter {name -eq $members} -Properties member).member[/code:1]
par ce code :
[code:1]$m = Get-ADObject -Filter {name -eq $members} -Properties member
if ($m) {
$m.member
}
[/code:1]
tu ce code :
[code:1](Get-ADObject -Filter {name -eq $members} -Properties member).member[/code:1]
par ce code :
[code:1]$m = Get-ADObject -Filter {name -eq $members} -Properties member
if ($m) {
$m.member
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- maxime
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 9 ans 8 mois #22025
par maxime
Réponse de maxime sur le sujet Re:Get-ADGRoupMember
Merci ! Ca avance : je n'ai plus d'erreur. Il crée bien le fichier de sortie mais il reste vide... J'arrive pas encore à comprendre la logique entre les }, les | et les fonctions d'après pour que tout interagisse comme il faut.
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
$csvImport | where {$_.members} | ForEach {
$name = $item.Dossier
$members = $item.Users
$droits = $item.Droits
$m = Get-ADObject -Filter {name -eq $members} -Properties member
if ($m) {
$m.member
}
export-csv \"C:\Users\Administrateur\Desktop\groups.csv\" -Delimiter ';' -encoding UTF8
}
[/code:1]
Je croyais pourtant être pas mal là...
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
$csvImport | where {$_.members} | ForEach {
$name = $item.Dossier
$members = $item.Users
$droits = $item.Droits
$m = Get-ADObject -Filter {name -eq $members} -Properties member
if ($m) {
$m.member
}
export-csv \"C:\Users\Administrateur\Desktop\groups.csv\" -Delimiter ';' -encoding UTF8
}
[/code:1]
Je croyais pourtant être pas mal là...
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 9 ans 8 mois #22026
par Philippe
Réponse de Philippe sur le sujet Re:Get-ADGRoupMember
petit cours ce matin 
les accolades {} servent à délimité une partie du script appelé scriptblock pour que l'on puisse voir le code exécuté dans certaine condition : where, for, foreach, if, invoke-command, etc...
si la condition est valide cette partie du script est exécuté
ex : si la variable $un contient la valeur numérique 1 alors il exécute le code qui affiche \"super\"
[code:1]
if ($un -eq 1) {
write-host \"super\"
}
[/code:1]
le pipe | sert à redirigé les données d'une instruction vers une autre instruction
très utilisé dans les boucles foreach, il permet entre autre de faire simplement des filtres avec where ou de faire des exports.
pour info pour que les objets soit transmis correctement entre les instructions ou scriptblocks, il faut qu'ils soit toutes du même type, sinon tu te retrouve avec un objet avec plusieurs type objet que tu devras identifié et trié
ce pipe fait partie des commandes pour géré les objets de la programmation orienté objets
on peut envoyer les données d'un objet dans le pipeline soit en donnant simplement le nom de la variable soit mettant write-output devant la variable
dans le pipe chaque objet transmis un à un et au travers la variable $_
plus d'info sur le tuto de Laurent ici
fin du cours
la list de tous les tutos de Laurent la
pour en revenir a ton script,
je reste persuadé que ton problème viens de ton fichier Classeur1.csv. la colonne users n'a pas ce nom !
tu peut confirmé le problème en exécutent ce script qui doit t'affiché la liste de groups/users du fichier :
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
$csvImport | ForEach {
$_.Users
}
[/code:1]
dans le cas ou tu n'a rien essai ceci :
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
$csvImport | ForEach {
$_.members
}
[/code:1]
si c'est bon tu peut executé le script suivant qui te donne la liste de tous les membres des groupes à l'ecran.
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
# boucle avec filtre des membres vide
$csvImport | where {$_.members} | ForEach {
# $_ est un des elements de $csvimport transmis par le pipeline
$members = $_.members
# recupére la liste de membres du groupe $members
$listmembers = Get-ADObject -Filter {name -eq $members} -Properties member
if ($listmembers) {
# envoie dans le pipeline la liste des membres du groupe
$listmembers.member
}
}[/code:1]
si c'est bon, ton script final doit ressemblé à ça :
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
# boucle avec filtre des membres vide
$csvImport | where {$_.members} | ForEach {
# $_ est un des elements de $csvimport transmis par le pipeline
$name = $_.Dossier
$members = $_.members
$droits = $_.Droits
# recupére la liste de membres du groupe $members
$listmembers = Get-ADObject -Filter {name -eq $members} -Properties member
if ($listmembers) {
# envoie dans le pipeline la liste des membres du groupe
$listmembers.member
}
} | export-csv \"C:\Users\Administrateur\Desktop\groups.csv\" -Delimiter ';' -encoding UTF8[/code:1]
les accolades {} servent à délimité une partie du script appelé scriptblock pour que l'on puisse voir le code exécuté dans certaine condition : where, for, foreach, if, invoke-command, etc...
si la condition est valide cette partie du script est exécuté
ex : si la variable $un contient la valeur numérique 1 alors il exécute le code qui affiche \"super\"
[code:1]
if ($un -eq 1) {
write-host \"super\"
}
[/code:1]
le pipe | sert à redirigé les données d'une instruction vers une autre instruction
très utilisé dans les boucles foreach, il permet entre autre de faire simplement des filtres avec where ou de faire des exports.
pour info pour que les objets soit transmis correctement entre les instructions ou scriptblocks, il faut qu'ils soit toutes du même type, sinon tu te retrouve avec un objet avec plusieurs type objet que tu devras identifié et trié
ce pipe fait partie des commandes pour géré les objets de la programmation orienté objets
on peut envoyer les données d'un objet dans le pipeline soit en donnant simplement le nom de la variable soit mettant write-output devant la variable
dans le pipe chaque objet transmis un à un et au travers la variable $_
plus d'info sur le tuto de Laurent ici
fin du cours
la list de tous les tutos de Laurent la
pour en revenir a ton script,
je reste persuadé que ton problème viens de ton fichier Classeur1.csv. la colonne users n'a pas ce nom !
tu peut confirmé le problème en exécutent ce script qui doit t'affiché la liste de groups/users du fichier :
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
$csvImport | ForEach {
$_.Users
}
[/code:1]
dans le cas ou tu n'a rien essai ceci :
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
$csvImport | ForEach {
$_.members
}
[/code:1]
si c'est bon tu peut executé le script suivant qui te donne la liste de tous les membres des groupes à l'ecran.
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
# boucle avec filtre des membres vide
$csvImport | where {$_.members} | ForEach {
# $_ est un des elements de $csvimport transmis par le pipeline
$members = $_.members
# recupére la liste de membres du groupe $members
$listmembers = Get-ADObject -Filter {name -eq $members} -Properties member
if ($listmembers) {
# envoie dans le pipeline la liste des membres du groupe
$listmembers.member
}
}[/code:1]
si c'est bon, ton script final doit ressemblé à ça :
[code:1]$csvImport = Import-Csv \"C:\Users\Administrateur
\Desktop\Classeur1.csv\" -Delimiter ';'
# boucle avec filtre des membres vide
$csvImport | where {$_.members} | ForEach {
# $_ est un des elements de $csvimport transmis par le pipeline
$name = $_.Dossier
$members = $_.members
$droits = $_.Droits
# recupére la liste de membres du groupe $members
$listmembers = Get-ADObject -Filter {name -eq $members} -Properties member
if ($listmembers) {
# envoie dans le pipeline la liste des membres du groupe
$listmembers.member
}
} | export-csv \"C:\Users\Administrateur\Desktop\groups.csv\" -Delimiter ';' -encoding UTF8[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Get-ADGRoupMember