Question
Powershell optimisation des tableaux
- hemon
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 11 ans 4 mois #18434
par hemon
Powershell optimisation des tableaux a été créé par hemon
Bonjour,
Désolé pour les problèmes d'accents la ou je travail il n'y que des claviers qwerty.
Apres plusieurs années a travailler sous Unix je me suis remis a travailler sur Powershell et par moment c'est un vrai bonheur. (manipuler les dates c'est magique avec PS)
J'analyse actuellement les groupes et les utilisateurs AD de mon entreprise et il y en a beaucoup.
Pour ce faire je récupère la liste des utilisateurs et des groupes(avec Get-ADUser et Get-ADGroup) et j'exécute un algo récursif sur la liste des groupes. Celui-ci construit une arborescence de l'AD et applique en passant diverse fonctions pour détecter les anomalies.
Lors de la construction de l'arbo je réalise des lookup a partir de l'attribut \"Members\" d'un groupe AD avec les listes des Users et Groupes pour récupérer des Objets ADUser/ADGroup avec toutes les propriétés.
Et c'est plutôt lent !
D'où ma question:
Existe t'il des structures sous PS/.Net permettant de réaliser des recherche plus efficaces ?
Par exemple si je trie ma liste d'ADUsers par SamAccountName est il possible de profiter du trie pour gagner en performance ? (J'effectue mes recherches sur cet attribut)
Désolé pour les problèmes d'accents la ou je travail il n'y que des claviers qwerty.
Apres plusieurs années a travailler sous Unix je me suis remis a travailler sur Powershell et par moment c'est un vrai bonheur. (manipuler les dates c'est magique avec PS)
J'analyse actuellement les groupes et les utilisateurs AD de mon entreprise et il y en a beaucoup.
Pour ce faire je récupère la liste des utilisateurs et des groupes(avec Get-ADUser et Get-ADGroup) et j'exécute un algo récursif sur la liste des groupes. Celui-ci construit une arborescence de l'AD et applique en passant diverse fonctions pour détecter les anomalies.
Lors de la construction de l'arbo je réalise des lookup a partir de l'attribut \"Members\" d'un groupe AD avec les listes des Users et Groupes pour récupérer des Objets ADUser/ADGroup avec toutes les propriétés.
Et c'est plutôt lent !
D'où ma question:
Existe t'il des structures sous PS/.Net permettant de réaliser des recherche plus efficaces ?
Par exemple si je trie ma liste d'ADUsers par SamAccountName est il possible de profiter du trie pour gagner en performance ? (J'effectue mes recherches sur cet attribut)
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 11 ans 4 mois #18435
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Powershell optimisation des tableaux
Salut,
bilbao2 écrit:
Est-ce la structure qui 'est lente' ou l'accès aux données ?
Une mise en cache est-elle possible ?
bilbao2 écrit:
Sous quelle version de PS et avec quel OS ?
bilbao2 écrit:
Quel structure utilises-tu actuellement ?Et c'est plutôt lent !
Est-ce la structure qui 'est lente' ou l'accès aux données ?
Une mise en cache est-elle possible ?
bilbao2 écrit:
Comment ? avec Sort-object ?Par exemple si je trie
Sous quelle version de PS et avec quel OS ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- hemon
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 11 ans 4 mois #18438
par hemon
Réponse de hemon sur le sujet Re:Powershell optimisation des tableaux
J'utilise deux tableaux d'objets que je récupère en utilisant les commandes get-aduser et get-adgroup.
En effet, afin d'éviter de spammer en requêtes LDAP j'effectue deux requêtes qui récupèrent tous les users/groupes qui m'intéressent.
Mon algo va ensuite effectuer un grand nombre de recherches dans ces tableaux.
Est-il possible d'optimiser les recherches en utilisant des fonctionnalités .Net/Powershell? (autre type de liste, autre type d'objet, fonction de recherches, etc...)
Par exemple si j'effectue un trie sur un tableau sur un attribut (ex:samAccountName). Si je fais ensuite une recherche sur cet attribut, il existe des algo qui évitent de parcourir la totalité du tableau. (Si je cherche un mot commençant par la lettre \"z\", l'algo ne va pas parcourir tout le tableau en commençant par les mots dont la première lettre est \"a\"
En effet, afin d'éviter de spammer en requêtes LDAP j'effectue deux requêtes qui récupèrent tous les users/groupes qui m'intéressent.
Mon algo va ensuite effectuer un grand nombre de recherches dans ces tableaux.
Est-il possible d'optimiser les recherches en utilisant des fonctionnalités .Net/Powershell? (autre type de liste, autre type d'objet, fonction de recherches, etc...)
Par exemple si j'effectue un trie sur un tableau sur un attribut (ex:samAccountName). Si je fais ensuite une recherche sur cet attribut, il existe des algo qui évitent de parcourir la totalité du tableau. (Si je cherche un mot commençant par la lettre \"z\", l'algo ne va pas parcourir tout le tableau en commençant par les mots dont la première lettre est \"a\"
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 11 ans 4 mois #18439
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Powershell optimisation des tableaux
Tu peux étudier
ceci
, ensuite reste
les arbres binaires
.
Bon, ce n'est pas à coder avec PS, mais a utiliser via une librairie, dans ton cas de savoir manipuler la création, l'insertion, la recherche et la destruction suffit.
La pioche est ici
Ou sur des référentiels projet tels que Codeplex, Github. La plupart nécessiteront PS V3 et >
Bon, ce n'est pas à coder avec PS, mais a utiliser via une librairie, dans ton cas de savoir manipuler la création, l'insertion, la recherche et la destruction suffit.
La pioche est ici
Ou sur des référentiels projet tels que Codeplex, Github. La plupart nécessiteront PS V3 et >
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- hemon
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 11 ans 4 mois #18446
par hemon
Réponse de hemon sur le sujet Re:Powershell optimisation des tableaux
J'ai transformé les tableaux de users et groupes en dictionnaire en utilisant le DN comme clé... et c'est beaucoup plus rapide pour accéder aux valeurs.
[code:1]$usersDict = @{}
$users = Get-ADUser -Filter {DistinguishedName -like \"*\"}
$users | % { $usersDict.add($_.DistinguishedName,$_) }[/code:1]
Je vais jeter un œil sur les arbres, mais leurs utilisation semble plus difficile que prévu.
Merci<br><br>Message édité par: bilbao2, à: 20/11/14 15:52
[code:1]$usersDict = @{}
$users = Get-ADUser -Filter {DistinguishedName -like \"*\"}
$users | % { $usersDict.add($_.DistinguishedName,$_) }[/code:1]
Je vais jeter un œil sur les arbres, mais leurs utilisation semble plus difficile que prévu.
Merci<br><br>Message édité par: bilbao2, à: 20/11/14 15:52
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 11 ans 4 mois #18449
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Powershell optimisation des tableaux
bilbao2 écrit:
Il 'faut juste' transformer la structure de données en un MCD équivalent.
Mais là, en dehors du requêtage, point de Powershell
<br><br>Message édité par: Laurent Dardenne, à: 20/11/14 17:11
Peut être. L'usage d'un arbre binaire est intéressant si la volumétrie est importante, mais dans ce cas on peut aussi se demander si un SGBD n'est pas préférable.Je vais jeter un œil sur les arbres, mais leurs utilisation semble plus difficile que prévu.
Il 'faut juste' transformer la structure de données en un MCD équivalent.
Mais là, en dehors du requêtage, point de Powershell
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Powershell optimisation des tableaux