Question
remplir un groupe
- Morand
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 16 ans 2 mois #5951
par Morand
remplir un groupe a été créé par Morand
Bonjour,
j'ai deux groupes AD : \"Laptops\" contenant des comptes d'ordinateurs portables et \"Laptop Users\" contenant les utilisateurs de portables.
Chaque compte d'ordinateur à un champ description rempli avec le prénom et nom de l'utilisateur, comme ce qui apparaît dans le champ \"Nom complet\" d'un utilisateur. On aurait dut utiliser je pense le champ \"géré par\", ca aurait été plus simple pour la suite mais bon, passons.
Mon problème est que le groupe \"Laptop Users\" contient bien plus d'utilisateurs que le groupe \"Laptops\" ne contient d'ordinateurs.
J'ai créé deux variables :
$users = Get-ADGroupMember \"Laptop Users\" | select Name | sort -Property Name
$laptops = Get-ADGroupMember \"Laptops\" | Get-ADComputer -Properties * | select Description | sort -Property Description
Ces deux listes contiennent en partie les mêmes informations, sauf que $users est complète et pas l'autre.
Ce que je cherche à faire c'est comparer chaque ligne de $users, voire si elle existe dans $laptops et si elle n'existe pas, ajouter l'ordinateur dont le champ description est la ligne courante de $users au groupe \"Laptops\". La partie ajout d'un compte à un groupe AD ca va, c'est plutôt la comparaison des deux listes qui me pose problème.
Voilà j'espère que j'ai été compréhensible et merci pour toute aide.
j'ai deux groupes AD : \"Laptops\" contenant des comptes d'ordinateurs portables et \"Laptop Users\" contenant les utilisateurs de portables.
Chaque compte d'ordinateur à un champ description rempli avec le prénom et nom de l'utilisateur, comme ce qui apparaît dans le champ \"Nom complet\" d'un utilisateur. On aurait dut utiliser je pense le champ \"géré par\", ca aurait été plus simple pour la suite mais bon, passons.
Mon problème est que le groupe \"Laptop Users\" contient bien plus d'utilisateurs que le groupe \"Laptops\" ne contient d'ordinateurs.
J'ai créé deux variables :
$users = Get-ADGroupMember \"Laptop Users\" | select Name | sort -Property Name
$laptops = Get-ADGroupMember \"Laptops\" | Get-ADComputer -Properties * | select Description | sort -Property Description
Ces deux listes contiennent en partie les mêmes informations, sauf que $users est complète et pas l'autre.
Ce que je cherche à faire c'est comparer chaque ligne de $users, voire si elle existe dans $laptops et si elle n'existe pas, ajouter l'ordinateur dont le champ description est la ligne courante de $users au groupe \"Laptops\". La partie ajout d'un compte à un groupe AD ca va, c'est plutôt la comparaison des deux listes qui me pose problème.
Voilà j'espère que j'ai été compréhensible et merci pour toute aide.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 2 mois #5954
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:remplir un groupe
Salut,
pour comparer et extraire les différences de deux listes tu peux utiliser le cmdlet Compare-Object:
[code:1]
cd $env:temp
@\"
un
deux
trois
quatre
cinq
six
\"@ > pc1.txt
@\"
un
trois
cinq
Sept
\"@ > pc2.txt
$Ancien= gc pc1.txt
$New=gc pc2.txt
#voir:
#http://dmitrysotnikov.wordpress.com/2008/06/06/compare-object-gotcha/
$Max=[Math]::Max($New.count,$Ancien.count)
#On compare des chaînes, on ne précise donc pas de nom
#de propriété pour la comparaison
$Comparaison=Compare-object $new $ancien -includeequal -Sync $Max
$Comparaison
$Egaux =@()
$Inexistants =@()
$Nouveaux =@()
foreach ($Item in $Comparaison)
{
switch ($Item.SideIndicator)
{
'==' {$Egaux +=$item}
'<=' {$Inexistants +=$item}
'=>' {$Nouveaux +=$item}
}
}
$ancien
$new
Write-host \"Egaux :\" -f Green
$Egaux
Write-host \"Nouveaux :\" -f Green
$Nouveaux
Write-host \"Inexistants :\" -f Green
$Inexistants
[/code:1]
A noter que l'usage d'un arraylist peut améliorer les performances si la liste est conséquente.
pour comparer et extraire les différences de deux listes tu peux utiliser le cmdlet Compare-Object:
[code:1]
cd $env:temp
@\"
un
deux
trois
quatre
cinq
six
\"@ > pc1.txt
@\"
un
trois
cinq
Sept
\"@ > pc2.txt
$Ancien= gc pc1.txt
$New=gc pc2.txt
#voir:
#http://dmitrysotnikov.wordpress.com/2008/06/06/compare-object-gotcha/
$Max=[Math]::Max($New.count,$Ancien.count)
#On compare des chaînes, on ne précise donc pas de nom
#de propriété pour la comparaison
$Comparaison=Compare-object $new $ancien -includeequal -Sync $Max
$Comparaison
$Egaux =@()
$Inexistants =@()
$Nouveaux =@()
foreach ($Item in $Comparaison)
{
switch ($Item.SideIndicator)
{
'==' {$Egaux +=$item}
'<=' {$Inexistants +=$item}
'=>' {$Nouveaux +=$item}
}
}
$ancien
$new
Write-host \"Egaux :\" -f Green
$Egaux
Write-host \"Nouveaux :\" -f Green
$Nouveaux
Write-host \"Inexistants :\" -f Green
$Inexistants
[/code:1]
A noter que l'usage d'un arraylist peut améliorer les performances si la liste est conséquente.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Morand
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 16 ans 2 mois #5955
par Morand
Réponse de Morand sur le sujet Re:remplir un groupe
Ah cool, merci je vais regarder ça de plus près!
Connexion ou Créer un compte pour participer à la conversation.
- Morand
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 16 ans 2 mois #5956
par Morand
Réponse de Morand sur le sujet Re:remplir un groupe
Oh je n'avais pas vu le petit lien en bas \"comparing group membership between different groups\", bien util, par contre il faut avoir le Quest cmdlet, que je vais m'empresser d'installer.<br><br>Message édité par: Sim, à: 15/01/10 13:07
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- remplir un groupe