Flash info

Prenez une longueur d'avance avec PowerShell. Faire ce choix c'est anticiper l'avenir des produits Microsoft mais aussi être plus performant dans son travail quotidien d'admin système.

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
rhiwotar
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Liste groupes par utilisateurs - 3/01/19 14:37 Bonjour à tous,

Je viens de bricoler ça à la demande d'un collègue qui voulais connaitre les utilisateurs actifs sur office365 et à quelle liste de diffusions ils font partis.
Le code marche mais il mets beaucoup trop de temps, (je l'ai lancé à 15h09, il tourne encore à 15h35)
j'ai moins de 300 users et 64 groupes,
Avez-vous une idée pour optimiser cela??


Merci d'avance!

Code:

  connect-msolservice Clear-Content "c:\ListeMailsGroupes.txt" #fonction ecriture de fichier fichier function liste($info){     Add-Content $info -Path "c:\ListeMailsGroupes.txt" } #Genere une liste d'utilisateurs $users Get-MsolUser -All Where-Object {$_.islicensed -like "true"} |sort displayname #Genere une liste de groupe $Groups Get-MsolGroup -all |Where-Object {$_.grouptype -like "mail*"}|sort displayname foreach($user in $users){     #affiche l'utilisateur en cours     liste($user.displayname)          foreach($group in $groups){         #liste les membres du groupe en cours         $test Get-MsolGroupMember -groupobjectid $group.objectid         #Si la variable n'est pas nulle et que l'utilisateur est membre         if (($test -notlike $null) -and ($test.displayname.contains($user.DisplayName))){             #Affiche le groupe             liste("   " $group.displayname)             #ligne de test             #write-host $group.displayname " : Oui"          }         else{             #ligne de test             #write-host $group.displayname " : Non"          }     } }

  | | L'administrateur a désactivé l'accés public en écriture.
Sinjk
Utilisateur

PowerShelleur Amateur
Messages: 99
graphgraph
Karma: 5  
Re:Liste groupes par utilisateurs - 8/01/19 08:24 Hello,

As tu essayé d'ajouter tes résultats dans un .txt au lieu de les afficher directement par un write-host ?
Me semble que l'affichage sur la console prend plus de temps que d'ajouter un resultat vers un fichier texte par exemple.

Bon courage
  | | L'administrateur a désactivé l'accés public en écriture.
rhiwotar
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Re:Liste groupes par utilisateurs - 8/01/19 10:20 Bonjour,

Les éléments sont bien générés dans un .txt (c'est ma fonction du début) mais là, je l'ai modifier pour l'envoyer dans un csv ou même en write-host, c'est tout aussi long, environ 1h10 pour 300 utilisateurs.

Après, c'est un script que je vais lancer de façon très occasionnel, en soit c'est pas gênant, c'est juste que j'aimerais savoir si c'est optimisable.
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1317
graphgraph
Karma: 45  
Re:Liste groupes par utilisateurs - 8/01/19 14:28 Hello Rhiwotar,

Je viens de regarder rapidement ton code et à première vue il m'a l'air tout à fait correct. Je n'ai rien à redire de ce côté-là.

Pour l’accélérer, il serait peut-être intéressant de lister le contenu de chaque groupe dans une table de hachage. Ainsi dans ta boucle foreach, au lieu d'interroger l'AD (ce que tu fais indirectement en utilisant Get-MsolGroupMember), tu accèderais aux tables de hachage et ce serait infiniment plus rapide.

Par contre il va falloir un peu de temps pour peupler tes tables au début de ton script, mais après le temps perdu sera largement compensé. Et plus tu auras d'utilisateurs, plus tu gagneras de temps.

Arnaud
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
rhiwotar
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Re:Liste groupes par utilisateurs - 9/01/19 11:07 Bonjour,

Connais pas la technique/méthode/truc/sorcelerie du hash, faudrait que je prenne le temps d'y jeter un œil quand je pourrais.

Si mon code est au mieux, alors tant mieux!!

Merci du conseil et bonne journée !
  | | L'administrateur a désactivé l'accés public en écriture.
© 2019 PowerShell-Scripting.com