Comment puis-je savoir quels scripts s'exécutent sur un ordinateur ?

S'il vous plaît Docteur Script...

Hey, Scripting Guy!

Bienvenue dans cette nouvelle section TechNet, dans laquelle le Docteur Script de Microsoft répond aux questions récurrentes sur les scripts d'administration système. Vous avez une question sur les scripts d'administration système ?

Question du jour : comment puis-je savoir quels scripts s'exécutent sur un ordinateur ?

Comment puis-je savoir quels scripts s'exécutent sur un ordinateur ?Comment puis-je savoir quels scripts s'exécutent sur un ordinateur ?

S'il vous plaît Docteur Script... Comment puis-je savoir quels scripts s'exécutent sur un ordinateur ?

-- NW

Bonjour NW. C'est une question à laquelle nous hésitons souvent à répondre parce qu'il y a de fortes chances pour que vous soyez déçu par la réponse. Si vous exécutez Windows 2000 (ou une version antérieure de Windows), la réponse est claire : vous ne pouvez pas. Un script comme le suivant – qui recherche tous les processus s'exécutant sous Cscript.exe ou Wscript.exe – indique que des scripts s'exécutent sur un ordinateur.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'cscript.exe'" & _
        " OR Name = 'wscript.exe'")
For Each objItem in colItems
    Wscript.Echo objItem.Name
Next

Cependant, ce script ne vous donne pas le nom des scripts qui s'exécutent. En fait, pour autant que nous sachions, rien dans le système d'exploitation ne permet d'identifier les scripts individuels s'exécutant sur un ordinateur Windows 2000 ; même le Gestionnaire des tâches ne consigne que le nom des processus (Cscript.exe et Wscript.exe).

Toutefois, si vous exécutez Windows XP ou Windows Server 2003, nous avons une réponse à vous apporter. Une nouvelle propriété – CommandLine – a été ajoutée à la classe Win32_Process dans Windows XP. Cette propriété vous indique la commande utilisée pour démarrer un processus. Supposons que vous ayez démarré un script en tapant cscript mon_script.vbs à l'invite de commandes. La propriété CommandLine de ce script sera alors :

cscript my_script.vbs

En d'autres termes, vous savez désormais que le script nommé Mon_Script.vbs s'exécute sur cet ordinateur.

Si vous n'utilisez pas l'invite de commandes pour démarrer un script, mais que vous double-cliquez sur l'icône de fichier dans l'Explorateur Windows et exécutez le script sous Wscript, il n'y a aucun problème non plus. Admettons que vous double-cliquiez sur le fichier C:\Scripts\Mon_Script.vbs. Vous obtenez la valeur CommandLine suivante :

C:\WINDOWS\System32\WScript.exe "C:\Scripts\My_Script.vbs" 

Comme vous pouvez le voir, vous obtenez le chemin d'accès du fichier exécutable Wscript ainsi que celui du script qui s'exécute. C'est mieux, non ?

En tout cas, que vous utilisiez Windows XP ou Windows Server 2003, voici un script qui fera le boulot pour vous :

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'cscript.exe'" & _
        " OR Name = 'wscript.exe'")
For Each objItem in colItems
    Wscript.Echo objItem.CommandLine
Next
Pour en savoir plus

Consultez les archives de S'il vous plaît Docteur Script...