PSinvoke ?

Le
Michel Claveau
Bonjour !

Hier, je suis tombé sur quelqu'un qui prétend utiliser un "PSinvoke",
lui permettant d'utiliser Power-Shell :
- soit en tant qu'objet-COM (serveur-COM)
- soit depuis un autre langage (C# ?)
Mais, je n'ai pas bien compris, car ce c'était en anglais, et pas
(encore ?) traduit en belge wallon.

Aucune recherche ne m'a donné de renseignements.

Peut-être les spécialistes d'ici-bas en sauront-ils plus ?

Merci d'avance. Mais, ce n'est pas très important ; il s'agit juste
d'une curiosité, dont j'archiverai les réponses (au cas où)



8-o



--
@-salutations

Michel Claveau
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean
Le #656790
Bonjour !

Hier, je suis tombé sur quelqu'un qui prétend utiliser un "PSinvoke", lui
permettant d'utiliser Power-Shell :
- soit en tant qu'objet-COM (serveur-COM)
- soit depuis un autre langage (C# ?)
Mais, je n'ai pas bien compris, car ce c'était en anglais, et pas (encore ?)
traduit en belge wallon.

Aucune recherche ne m'a donné de renseignements.

Peut-être les spécialistes d'ici-bas en sauront-ils plus ?

Merci d'avance. Mais, ce n'est pas très important ; il s'agit juste d'une
curiosité, dont j'archiverai les réponses (au cas où)



8-o


En broutant (la bouche fermée :-) ) j'ai trouvé ça mais il s'agit de
PSInvoker :

http://groups.google.com/group/microsoft.public.windows.powershell/msg/dabfdcc21246b9b4?hl=fr

Amicalement,

--
Jean - JMST
Belgium

Méta-MCI
Le #656562
Bonjour !


J'ai rien compris ! C'est tout en anglais et en C#...

Sinon, on dirait que c'est un bout de code, pour créer, en C#, un composant
COM qui va instancier un "PSObject", et lui retransmettre les appels reçus.

C'est ça ? J'ai gagné ?


@+

MCI
Jacques Barathon [MS]
Le #656559
"Méta-MCI" news:%
Bonjour !


J'ai rien compris ! C'est tout en anglais et en C#...

Sinon, on dirait que c'est un bout de code, pour créer, en C#, un
composant COM qui va instancier un "PSObject", et lui retransmettre les
appels reçus.

C'est ça ? J'ai gagné ?


C'est bien ça. Sauf que le type a un problème: ça marche pas. Apparemment
personne ne lui a répondu, et je n'ai pas pris le temps de compiler son code
pour reproduire le test. Si le coeur t'en dit!

Jacques

Michel Claveau
Le #656557
Bonsoir, Jacques !

Si le coeur t'en dit!




Oui, ça me dit. Malheureusement, apprendre C# juste pour 30 lignes de
code... Je crois que je vais attendre que quelqu'un le fasse.
Surtout s'il y a un problème à régler.





--
@-salutations

Michel Claveau



Jacques Barathon [MS]
Le #656308
"Michel Claveau" news:
Bonsoir, Jacques !

Si le coeur t'en dit!




Oui, ça me dit. Malheureusement, apprendre C# juste pour 30 lignes de
code... Je crois que je vais attendre que quelqu'un le fasse.
Surtout s'il y a un problème à régler.


Débuts de réponse...

Pour exécuter PowerShell depuis n'importe quel autre environnement (cmd.exe,
VBScript, etc) tu peux tout simplement appeler PowerShell.exe en lui passant
les commandes en paramètre. Par exemple:

C:> powershell -noprofile -outputformat text -command "& {get-process|where
{$_.handles -gt 1000}}"

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
1138 16 16696 17316 113 2208 CcmExec
1405 32 48160 41004 282 637,01 3948 communicator
1441 42 76280 50892 348 755,79 3460 explorer
4556 48 116996 100532 351 1 780,36 4528 iexplore
6333 58 126476 58600 329 817,20 5000 iexplore
1239 18 7060 3372 70 568 lsass
1636 4 8756 3524 39 576 lsm
6339 88 112896 201148 689 109,15 33532 OUTLOOK
1561 17 77896 44540 329 2112 SearchIndexer
1079 19 11884 10016 145 0,59 35888 SearchProtocolHost
10607 11 14956 10540 70 888 svchost
1061 14 23896 17784 95 976 svchost
2148 47 45604 31156 183 1040 svchost
1121 23 24336 13184 124 1424 svchost
1017 158 245928 110852 429 320,83 13692 WinMail

La subtilité consiste à encadrer tes commandes avec "& { ... }" pour
qu'elles soient bien exécutées.

Tu noteras qu'ici j'ai choisi une sortie au format texte pour pouvoir la
lire facilement depuis cmd.exe, mais il est possible de spécifier XML à la
place si l'on veut exporter le résultat vers une autre application.

Le commutateur -noprofile permet d'éviter l'exécution du profil utilisateur,
qui dans mon cas affiche des informations parasites pour un tel usage. Tape
"powershell /?" depuis cmd.exe pour plus d'infos sur les commutateurs.

Maintenant, pour une intégration de PowerShell plus poussée, il faudrait
voir du côté de l'utilisation des classes .NET disponibles. Tu trouveras des
infos sur la section de MSDN dédiée à PowerShell:
http://msdn2.microsoft.com/en-us/library/aa139691.aspx

... et notamment là:
http://msdn2.microsoft.com/en-us/library/ms714661.aspx

Malheureusement, tout ça est en anglais, il n'y a pas (encore?) de
traduction de ce contenu.

Pour ce qui est d'accéder au moteur PowerShell via COM, il faut donc un
"wrapper" pour accéder aux classes .NET, et c'est à priori l'objectif du
bout de programme mentionné plus tôt dans cette discussion. Reste à le
compiler et à le tester, ce que je ferai quand j'aurai réinstallé VS.NET sur
mon poste, en priorité basse pour le moment...

Jacques




Publicité
Poster une réponse
Anonyme