Tuer un processus d'une liste de machine distante sur un domaine

wombo27 Messages postés 2 Date d'inscription mercredi 10 octobre 2012 Statut Membre Dernière intervention 5 septembre 2013 - Modifié par wombo27 le 5/09/2013 à 17:10
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 6 sept. 2013 à 13:29
Bonjour,

Je travaille depuis quelques jours en vain sur un moyen de tuer un processus sur plusieurs machines de mon domaine.
Je souhaite faire un script qui permet de faire ceci en utilisant les noms des machines du domaine, et le nom du processus à stopper, et sans avoir à installer un script client sur chaque machine.

J'ai déjà réussi à modifier un script trouvé sur le Net pour pouvoir générer dans un fichier .txt une liste des machines de mon Active Directory.

j'ai ensuite trouvé sur la toile ce script que j'ai modifié, afin qu'il permet (normalement^^") de démarrer un processus donné dans une liste de machine distante.
processname = "NOTEPAD.EXE"
query = "SELECT * FROM Win32_Process WHERE Name='" & processname & "'"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\list.txt")

Do Until f.AtEndOfStream
  skipServer = False
  server = f.ReadLine

  On Error Resume Next
  Set wmi = GetObject("winmgmts://" & server &"/root/cimv2")
  If Err Then
    WScript.Echo "Error " & Err.Number & " connecting to " & server & ": " _
      & Err.Description
    On Error Goto 0
    skipServer = True
  End If
  On Error Goto 0

  If Not skipServer Then
    For Each process in wmi.ExecQuery(query)
        objProcess.Terminate()
    Next

    WScript.Echo processname & "kill on " & server & "."
  End If
Loop

f.Close

Malheureusement le script n'arrive pas à trouver le PC distant.
Toutes les modifications que j'ai tentées n'ont malheureusement pas abouti, c'est pourquoi je fais appel à vos connaissances.


Merci d'avance pour votre aide,

Wombo

1 réponse

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
6 sept. 2013 à 13:24
Bonjour Wombo,

Avant de tester avec un fichier contenant la liste des serveurs, je te propose de tester ces quelques lignes de code en remplaçant le nom du serveur.

Option Explicit
Dim objProcess, strComputer, strProcessName, strQuery

strComputer = "MyServer"
strProcessName = "notepad.exe"
strQuery = "SELECT * FROM Win32_Process WHERE Name='" & strProcessName & "'"

For Each objProcess In GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\" &_
    strComputer & "rootcimv2").ExecQuery(strQuery)
    WScript.Echo objProcess.Name & Space(5) & objProcess.ProcessID
Next



jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
6 sept. 2013 à 13:29
La saisie dans la balise "code" est erronée avec les anti-slashs.

Option Explicit
Dim objProcess, strComputer, strProcessName, strQuery

strComputer = "MyServer"
strProcessName = "notepad.exe"
strQuery = "SELECT * FROM Win32_Process WHERE Name='" & strProcessName & "'"

For Each objProcess In GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\cimv2").ExecQuery(strQuery)
WScript.Echo objProcess.Name & Space(5) & objProcess.ProcessID
Next
0
Rejoignez-nous