Question pb : runspacepool et wmi connectserver
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
Tout cela me rappelle un peu une discussion , en 2010 (notamment les derniers posts).
@ +
Matthew BETTON
Connexion ou Créer un compte pour participer à la conversation.
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 54
- Remerciements reçus 0
Merci pour les informations et les liens. Je m'y mets demain.
Sur MSDN j'avais un peu \"senti\" la différence STA/MTA mais pas suffisamment pour en comprendre l'impact avec les API WMI dans le mécanisme runspacepool.
La valeur par défaut est \"unknow\". Je suppose donc qu'il prend la valeur de PS Console qui doit être MTA puisque STA est un paramètre de powershell.exe.Que donne l'exécution de ton script sans préciser ce paramètre ?
Comme je le disais, sans $runspacePool.ApartmentState = \"STA\", si $throttleLimit est supérieur à 25 (sur mon pc ) et avec les requêtes WMI connectserver/createprocess, alors la console Ps de fige dès la limite atteinte ou légèrement dépassée.
C'est en créant ce post dans ce forum que j'ai trouvé le site signalant l'existence de ce paramètre ( et son rôle mais comme c'est en anglais et que je ne comprends pas grand chose ).
J'ai donc posté ici tout à la fois, la description du contexte, l'anomalie rencontrée, la solution possible.
Aujourd'hui je peux dire qu'avec ce paramètre \"STA\", j'ai utilisé sans problème $throttleLimit = 500 pour les connexions aux 7800 machines distantes et y créer des processus, le tout avec WMI en utilisant les API DOT.NET de runspacepool. Pour les 7800 XPSP3 distants, j'ai pu modifier une clé de registre et lancer un processus en 2H07. Et 2 fois car j'ai eu 2 demandes du \"client\".
Finalement ma question se résume ainsi : dans ce contexte de connexion/création de processus via WMI dans un environnement runspacepool, comment expliquer et garantir que le bon fonctionnement dépend bien de ce paramètre STA? Car je me méfie des évidences de mes tests et des recettes de cuisines.
Ce mécanisme runspacepool reste marginal surtout dans un environnement respectant l'état de l'art, domaine, GPO, outil d'inventaire, de télédistribution ( ce qui n'est pas le cas pour mon travail ).
Respectueusement.
Noël
Connexion ou Créer un compte pour participer à la conversation.
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 54
- Remerciements reçus 0
Je viens de recevoir une réponse depuis un autre forum.
La réponse ( à la fin ) semble très pertinente et je crois comprendre le lien entre WMI et STA des runspacepool.
powershell.org/wp/forums/topic/runspacep...ectserver/#post-9844
J'ai regardé dans la registry de mon xp pour \"WbemScripting.SWbemLocator\"Also, the WbemScripting.SWbemLocator COM object requires STA
HKEY_CLASSES_ROOT\CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6}\InProcServer32
L'adéquation/cohérence des modèles n'est peut être pas une obligation puisqu'il y a une table de correspondances entre le modèle du serveur etle modèle du client. Mais je suis sûr de mal interpréter.
Peut être aurez vous l'énergie pour faire un complément d'information compréhensible pour un béotien comme moi.
J'ai envie de dire que puisque le \"locator WMI\" est STA alors les runspacepool de dot.net doivent être STA.
Respectueusement.
Noël
Ps : j'ai aussi acheté le livre PS V3 car en français, c'est mieux pour moi. C'est un gros pavé !<br><br>Message édité par: noel, à: 30/08/13 00:15
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
C'est à toi de creuser le sujet COM, par exemple au travers de cette FAQ .Peut être aurez vous l'énergie
En fin d'article codeplex précédemment cité, l'auteur indique qq ouvrages, voici ce qu'on y trouve comme remarque sur Amazon :
COM est complexe, c'est aussi la raison pour laquelle MS à fait en sorte que le dev Windows 8 s'en affranchisse .Ok, this is the skinny on COM:
1) COM is hard
2) you will not learn COM by reading only one book
3) attempt COM in stages: read about it, use someone elses servers, write your own
servers, write your own servers in a multi-threaded environment
To learn COM you must take weeks of expensive courses or read these books in this order:
1) \"Understanding ActiveX and OLE\": optional; easy read but recommended
2) \"Inside COM\": strongly recommended; if you really appreciate \"Essential COM\" without reading this first you are smarter than I am
3) \"Multithreading Applications in Win32\": strongly recommended
4) \"Essential COM\": essential; once you have your COM bearings read this book, then read it again in 6 months to realize how many details you missed the first time
5) \"Beginning Atl Com Programming\": recommended
6) \"Effective COM\": optional
7) \"Essential ATL\": optional
8) \"Inside OLE2\": optional, for brave souls only
Whew! That is a lot but it all really is required. If you attempt shortcuts or read the books out of order, you risk being crushed by someone who really knows COM. Oh yeah, you must also know C++ cold, suspend your beliefs about C++ objects, and be open to the idea of distributed components. Good luck!
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- pb : runspacepool et wmi connectserver