|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Bonjour à tous !
Je cherche a accéder aux processus d'un logiciel (Obiee) qui tourne sur un serveur distant. (inutile de préciser que j'ai tous les droits) Je développe en C#. Ma première idée fut de recourir à la classe Process. Je l'ai abandonnée. En effet, dans le gestionnaire des tâches certains processus ont le même nom et peuvent être dupliqué plusieurs fois par certains services. J'ai toutefois une commande dos qui me permet d'obtenir les informations que je cherche. Mon problème est donc le suivant : Comment mon programme en c# va-t-il lancer une commande dos sur le serveur distant ? A l'aide ! Merci d'avance |
|
|
00
|
|
|
#2 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Eurêka !
La classe Process était bien mon amie finalement. Je m'en sers pour lancer cmd puis je passe mes arguments via ProcessStartInfo. (y'a plus qu'à tester) Toutes mes excuses pour ce flood. Bien à vous, Tarmineldur |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Mathieu Conseil - Consultant en systèmes d'information Inscription : février 2010 Messages : 977 ![]() |
Il y a plusieurs façons de faire.
Personnellement, je te conseille d'utiliser WMI. Tu trouveras du code en exemple sur ce lien : Create a Remote Process using WMI in C# |
|
10
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Merci de ta réponse.
J'ai lu ton lien avec attention et si j'ai bien compris (enfin je crois) comment créer un fichier batch, j'ai beaucoup plus de mal à comprendre comment extraire des informations via ce moyen. Quant à ma solution via la classe Process, j'ai le même problème : je vois bien comment entrer des lignes de commandes mais je ne sais pas comment récupérer les informations qui s'affichent alors dans la console. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Mathieu Conseil - Consultant en systèmes d'information Inscription : février 2010 Messages : 977 ![]() |
Je ne sais pas comment faire ça avec Process.
Cet article montre comment faire pour récupérer le code de sortie via WMI : http://blogs.msdn.com/b/padmanr/arch...using-wmi.aspx Est-ce que ça répond à ton besoin ? [EDIT] : il n'est à ma connaissance pas possible de récupérer au fur et à mesure ce qui s'affiche sur la console en tant que tel. La seule chose qui soit possible de faire est de récupérer l'affichage de l'ordinateur distant, pour l'afficher sur l'ordinateur local (sous forme d'images en gros). |
|
10
|
|
|
#6 | |
|
Membre éprouvé
![]() Ingénieur développement logiciels Inscription : mars 2011 Messages : 258 ![]() |
Bonjour,
Citation:
Par contre, utiliser Process pour lancer un processus sur un autre ordinateur, alors là je ne sais pas du tous. |
|
|
|
10
|
|
|
#7 | |
|
Membre Expert
![]() Mathieu Conseil - Consultant en systèmes d'information Inscription : février 2010 Messages : 977 ![]() |
Citation:
Je n'avais pas connaissance de ces propriétés. Merci pour cette correction.
|
|
|
10
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Après mure réflexion, je ne comprends pas comment marche le WMI... Je ne comprends rien aux chemins d'accès par exemple. Dans mon cas, la machine est sur le réseau local, quel en est alors le chemin ? Quelle syntaxe dois-je utiliser ?
Pour ce qui est de streamreader, je connaissais mais je n'y avais pas pensé, bien vu. Voilà qui finit de répondre à mon problème relatif à l'obtention des statuts. Reste l’arrêt relance. |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 5 390 ![]() |
Code :
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
||
|
|
10
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Merci beaucoup, là c'est beaucoup plus clair. Je vous tiens au courant.
|
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Comment se fait il que si je démarre cmd.exe par exemple, je n'ai pas la fenetre ? comment l'avoir ?
|
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Mathieu Conseil - Consultant en systèmes d'information Inscription : février 2010 Messages : 977 ![]() |
Ceci fonctionne bien chez moi :
Code C# :
object[] theProcessToRun = { @"notepad.exe /A C:\Temp\AssemblyRegistration.xml" }; |
|
10
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Merci !
Désolé de poser une question aussi triviale mais c'est assez du de trouver de la bonne doc sur le sujet. C'est plus facile sur d'autres langages. |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Mathieu Conseil - Consultant en systèmes d'information Inscription : février 2010 Messages : 977 ![]() |
C'est sûr que ce n'est pas toujours évident, mais WMI est très puissant, donc ça vaut le coup de s'y intéresser et de persévérer.
Concernant ta question sur CMD, chez moi avec cette commande : Code C# :
object[] theProcessToRun = { @"cmd.exe" }; Et avec ceci (pour lancer l'instruction WMI en local) : Code C# :
ManagementScope theScope = new ManagementScope("\\\\127.0.0.1\\root\\cimv2", theConnection); J'ai bien la console qui s'affiche... |
|
10
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
De mon côté, que ce noit notepad ou cmd, ça s'affiche bien dans la liste des processus (donc ça marche) mais je n'ai pas la fenêtre. Il doit exister une option... quelque part...
|
|
|
00
|
|
|
#16 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Hum... lorsque je le fait sur mon pc (via 127.0.0.1) ça s'affiche bien en fenêtre, mais lorsque que je le fait sur mon server (qui tourne joyeusement sur windows server) ça ne s'affiche plus. Là, ça ne sent pas bon...
|
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Mathieu Conseil - Consultant en systèmes d'information Inscription : février 2010 Messages : 977 ![]() |
C'est normal que tu n'aies pas la fenêtre lorsque tu envoies la commande à ton serveur. L'important c'est que le process se lance, en principe tu n'es pas censée être logguée sur ton serveur H24
|
|
10
|
|
|
#18 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Je vais donc lancer via wmi un .bat qui exécutera environ 7 lignes de codes qui me donnerons les statuts de certains processus très particulier.
Pour récupérer ces statuts qui s’afficheront dans la console invisible, je pense utiliser la classe process et récupérer cmd.exe via GetProcessesByName et rediriger la sortie de cmd.exe grace à Streamreader. Je me pose donc deux questions : Peut on vraiment rediriger l'output de cmd.exe s'il est sur une machine distante ? Et surtout : Je risque d'avoir un problème si plusieurs cmd.exe sont en train de tourner pour savoir lequel est le bon. Il faudrait donc que je connaisse son ID au démarrage sachant que c'est le .bat qui le lance... Une idée ? Je vais être obligé de devoir me passer de .bat non ? il me semble qu'on peut connaitre l'ID du processus quand on le lance via wmi... Du coup, ce n'est pas un mais 7 arguments que je vais devoir donner à cmd en le lançant avec wmi, comment fait on ? Soyez assurés que je cherche de mon côté Merci de votre aide |
|
|
00
|
|
|
#19 | ||
|
Membre Expert
![]() Mathieu Conseil - Consultant en systèmes d'information Inscription : février 2010 Messages : 977 ![]() |
A mon avis, il faut que tu choisisses clairement ton camp :
- soit tu restes en pur .NET avec la class Process - soit tu restes sur WMI Avec WMI, tu peux récupérer les informations sur les processus en utilisant ce genre de code : Code C# :
Dans la variable cmdLine, il je récupère la commande qui a servi a lancer le processus (donc avec les paramètres s'il y en a). Dans la variable handle, je récupère l'ID du process. Une série d'articles à voir sur CodeProject : Working With Windows Management Instrumentation (WMI) - Part 1 Working With Windows Management Instrumentation (WMI) - Part 2 Working With Windows Management Instrumentation (WMI) - Part 3 Working With Windows Management Instrumentation (WMI) - Part 4 |
||
|
10
|
|
|
#20 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : septembre 2012 Messages : 54 ![]() |
Merci beaucoup de ta réponse. Il semblerait effectivement que la voix mixte ne mène nulle part. Quant à la classe Process, elle semble un peu faible.
Vive WMI ! Je m'en vais donc chercher dans cette voix. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com