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

Signaler
Messages postés
2
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
5 septembre 2013
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
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

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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