Question problème de lenteur avec un export
- Durand
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 6 mois 2 semaines - il y a 6 mois 2 semaines #34200
par Durand
problème de lenteur avec un export a été créé par Durand
Bonjour,
J'utilise Powershell depuis plusieurs années mais je constate un comportement très bizarre et j'aimerais avoir votre avis pour savoir si cela est normal ou si ca peut ce corriger/contourner.
Voici mon test, je récupère la liste d'utilisateur, une fois en spécifiant un controleur de domaine et l'autre sans.
Puis je les export en CSV avec par exemple.
Le problème est le suivant, l'export UserB est BEAUCOUP plus long.
Je ne parle du temps pour les Get-Aduser bien entendu, JUSTE de l'export CSV.
L'export A prend 0,3s
L'export B prend 46s
Si je coupe ma connexion réseau pour l'export CSV, l'export UserB n'est pas complet, j'ai des propriétés vides (le champ mail par exemple).
Powershell semble donc ne pas tout stocker en variable et des propriétés semblent être récupérées à la volé.
Donc, est-ce normal ?
Comment rendre la chose plus rapide si c'est le cas ?
Si vous voulez mon script pour reproduire le comportement:
J'utilise Powershell depuis plusieurs années mais je constate un comportement très bizarre et j'aimerais avoir votre avis pour savoir si cela est normal ou si ca peut ce corriger/contourner.
Voici mon test, je récupère la liste d'utilisateur, une fois en spécifiant un controleur de domaine et l'autre sans.
$UserA = Get-ADUser -Filter * -Properties *
$UserB = Get-ADUser -Filter * -Properties * -Server $DC
Puis je les export en CSV avec par exemple.
Le problème est le suivant, l'export UserB est BEAUCOUP plus long.
Je ne parle du temps pour les Get-Aduser bien entendu, JUSTE de l'export CSV.
L'export A prend 0,3s
L'export B prend 46s
Si je coupe ma connexion réseau pour l'export CSV, l'export UserB n'est pas complet, j'ai des propriétés vides (le champ mail par exemple).
Powershell semble donc ne pas tout stocker en variable et des propriétés semblent être récupérées à la volé.
Donc, est-ce normal ?
Comment rendre la chose plus rapide si c'est le cas ?
Si vous voulez mon script pour reproduire le comportement:
$UserA = Get-ADUser -Filter * -Properties * -SearchBase $OU
$UserB = Get-ADUser -Filter * -Properties * -SearchBase $OU -Server $DC
(Measure-Command {$UserA | Export-Csv -Path ".\UserA.csv"}).TotalSeconds
"Export avec DC"
(Measure-Command {$UserB | Export-Csv -Path ".\UserB.csv"}).TotalSeconds
Dernière édition: il y a 6 mois 2 semaines par Durand.
Connexion ou Créer un compte pour participer à la conversation.
- Durand
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 6 mois 2 semaines #34203
par Durand
Réponse de Durand sur le sujet problème de lenteur avec un export
J'ai trouvé pourquoi, pour ceux qui aurait la même interrogation :
learn.microsoft.com/en-us/dotnet/framewo.../lazy-initialization
learn.microsoft.com/en-us/dotnet/framewo.../lazy-initialization
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 6 mois 2 semaines #34205
par Alastor
Réponse de Alastor sur le sujet problème de lenteur avec un export
Je ne connaissais pas l'approche lazy.
Du coup, le get-aduser en spécifiant un DC est lazy ?
Je ne précise jamais de DC, je laisse faire AD.
Du coup, le get-aduser en spécifiant un DC est lazy ?
Je ne précise jamais de DC, je laisse faire AD.
Connexion ou Créer un compte pour participer à la conversation.
- Durand
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 6 mois 2 semaines #34207
par Durand
Réponse de Durand sur le sujet problème de lenteur avec un export
Non il a toujours des propriétés Lazy (le champ mail par exemple)
Soit tu fais un " | select ... " AVEC ton get-aduser et du coup il récupère les champs au même moment.
Soit comme je le faisait avant, tu fais le select-object uniquement au moment de l'export et il requête de nouveau l'AD pour les propriétés lazy. Donc si t'as un DC rapide et quelques milliers d'user, ca va, mais si t'as en as des dizaines de milliers et que ton DC est lent, ca prend plusieurs minutes juste pour l'export.
Soit tu fais un " | select ... " AVEC ton get-aduser et du coup il récupère les champs au même moment.
Soit comme je le faisait avant, tu fais le select-object uniquement au moment de l'export et il requête de nouveau l'AD pour les propriétés lazy. Donc si t'as un DC rapide et quelques milliers d'user, ca va, mais si t'as en as des dizaines de milliers et que ton DC est lent, ca prend plusieurs minutes juste pour l'export.
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 6 mois 2 semaines #34208
par Alastor
Réponse de Alastor sur le sujet problème de lenteur avec un export
J'ai 20k user et j'ai jamais remarqué de lenteur après un get-aduser, pas même lorsque je suis en VPN... étrange... mais intéressant !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.113 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- problème de lenteur avec un export