Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WMI:ExecQuery avec variable type

16 réponses
Avatar
Alain CROS
Bonjour.

Je connais la variable intProcessID et cette ligne de code me génère l'erreur suivante.

Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessId = " & Cstr(intProcessID))

Script : C:\MonScript.vbs
Ligne : 26
Caract. : 1
Erreur : Erreur non reconnue
Code : 80004005
Source : SWbemObjectSet

Je pense que le problème vient de la conversion en String de la variable intProcessID.
J'ai essayé :
Where ProcessId = " & intProcessID)
Where ProcessId = '" & intProcessID & "'")
etc...
et toujours la même erreur.
Si quelqu'un a une idée ?
Merci.

Alain CROS

10 réponses

1 2
Avatar
Jacques Barathon [MS]
As-tu essayé en passant par une variable pour concaténer la chaîne passée en
paramètre:

strProcList = "Select * from Win32_Process Where ProcessId = " &
CStr(intProcessID)
Set colProcesses = objWMIService.ExecQuery (strProcList)

Jacques

"Alain CROS" wrote in message
news:
Bonjour.

Je connais la variable intProcessID et cette ligne de code me génère
l'erreur suivante.

Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessId = " &
Cstr(intProcessID))

Script : C:MonScript.vbs
Ligne : 26
Caract. : 1
Erreur : Erreur non reconnue
Code : 80004005
Source : SWbemObjectSet

Je pense que le problème vient de la conversion en String de la variable
intProcessID.
J'ai essayé :
Where ProcessId = " & intProcessID)
Where ProcessId = '" & intProcessID & "'")
etc...
et toujours la même erreur.
Si quelqu'un a une idée ?
Merci.

Alain CROS




Avatar
Alain CROS
Bonjour.

Merci pour ta réponse mais malheureusement, j'obtient le même message.

Alain CROS

"Jacques Barathon [MS]" a écrit dans le message de news:
As-tu essayé en passant par une variable pour concaténer la chaîne passée en
paramètre:

strProcList = "Select * from Win32_Process Where ProcessId = " &
CStr(intProcessID)
Set colProcesses = objWMIService.ExecQuery (strProcList)

Jacques

"Alain CROS" wrote in message
news:
Bonjour.

Je connais la variable intProcessID et cette ligne de code me génère
l'erreur suivante.

Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessId = " &
Cstr(intProcessID))

Script : C:MonScript.vbs
Ligne : 26
Caract. : 1
Erreur : Erreur non reconnue
Code : 80004005
Source : SWbemObjectSet

Je pense que le problème vient de la conversion en String de la variable
intProcessID.
J'ai essayé :
Where ProcessId = " & intProcessID)
Where ProcessId = '" & intProcessID & "'")
etc...
et toujours la même erreur.
Si quelqu'un a une idée ?
Merci.

Alain CROS








Avatar
jbongran
Alain CROS wrote:
Bonjour.

Merci pour ta réponse mais malheureusement, j'obtient le même message.

Alain CROS

"Jacques Barathon [MS]" a écrit dans
le message de news:
As-tu essayé en passant par une variable pour concaténer la chaîne
passée en paramètre:

strProcList = "Select * from Win32_Process Where ProcessId = " &
CStr(intProcessID)
Set colProcesses = objWMIService.ExecQuery (strProcList)
[...]


A tout hasard:
strProcList = "Select * from Win32_Process Where ProcessId = '" &
CStr(intProcessID) & "'"
Set colProcesses = objWMIService.ExecQuery (strProcList)

ou alors peut être ne pas convertir en chaine (cstr) la variable
intProcessID


Avatar
Jean-Claude BELLAMY
Dans le message news: ,
Alain CROS s'est ainsi exprimé:

Bonjour.

Je connais la variable intProcessID et cette ligne de code me génère
l'erreur suivante.

Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessId = " &
Cstr(intProcessID))

Script : C:MonScript.vbs
Ligne : 26
Caract. : 1
Erreur : Erreur non reconnue
Code : 80004005
Source : SWbemObjectSet

Je pense que le problème vient de la conversion en String de la
variable intProcessID. J'ai essayé :
Where ProcessId = " & intProcessID)
Where ProcessId = '" & intProcessID & "'")
etc...
et toujours la même erreur.



Fais voir l'intégralité de ton script !

Car je viens d'écrire cela, en faisant un copier-coller de cette aprtie de
ton script :

------ couper ici ------
Set args = Wscript.Arguments
nbargs=args.count
if nbargs=0 then wscript.quit
intProcessID=args(0)
Computer="."
Set objWMIService = GetObject("winmgmts:" & Computer & "rootcimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessId = " & Cstr(intProcessID))
for each process in colProcesses
wscript.echo process.Description
next
------ couper ici ------

et çà fonctionne nasodigitalement !

I:Program FilesVBS>testprocess 4044
acrotray.exe

I:Program FilesVBS>testprocess 3900
wcescomm.exe

I:Program FilesVBS>testprocess 1868
K9.exe

I:Program FilesVBS>testprocess 3404
RegKillTray.exe

...

Donc l'erreur est ailleurs !


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *


Avatar
Alain CROS
Bonjour.

Tu a raison, l'erreur provient de la ligne suivante lorsque je fais afficher le nombre d'éléments contenus dans la collection
retournée par cette ligne.

Voici le code.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set objProcess = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2:Win32_Process")
objProcess.Create "C:Program FilesInternet ExplorerIExplore.exe", null, null, intProcessID
Msgbox "ProcessID = " & intProcessID, vbSystemModal
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessId = '" & intProcessID & "'")
' ("Select * from Win32_Process Where ProcessId = " & intProcessID)
' ("Select * from Win32_Process Where ProcessId = " & Cstr(intProcessID))
Msgbox intProcessID & vbnewline & colProcesses.Count
Wscript.Quit

Si je remplace la ligne par

Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'IExplore.exe'")

Je n'obtient pas d'erreur.

La question est donc :
Comment faire passer dans une requete, donc sous forme de texte, une variable numérique?

Merci.

Alain CROS

"Jean-Claude BELLAMY" a écrit dans le message de news:

Fais voir l'intégralité de ton script !

...

Donc l'erreur est ailleurs !



Avatar
Jean-Claude BELLAMY
Dans le message news: ,
Alain CROS s'est ainsi exprimé:

Bonjour.

Tu a raison, l'erreur provient de la ligne suivante lorsque je fais
afficher le nombre d'éléments contenus dans la collection retournée
par cette ligne.
[...]
Msgbox intProcessID & vbnewline & colProcesses.Count
[...]
Si je remplace la ligne par

Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'IExplore.exe'")

Je n'obtient pas d'erreur.

La question est donc :
Comment faire passer dans une requete, donc sous forme de texte, une
variable numérique?


Il n'y a rien à faire de spécial !

Tu me sembles avoir un esprit vraiment compliqué ! ;+)


Ce script fonctionne parfaitement :

Computer="."
Set objWMI=GetObject("winmgmts://" & Computer)
Set objProcess =objWMI.Get("Win32_Process")
objProcess.Create "C:Program FilesInternet ExplorerIExplore.exe",,,
intProcessID
Set colProcesses = objWMI.ExecQuery _
("Select * from Win32_Process Where ProcessId = " & intProcessID)
for each process in colProcesses
wscript.echo process.Description
next


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *


Avatar
Jean
Bonjour,

Comment faire passer dans une requete, donc sous forme de texte, une variable numérique?


CStr Function
http://msdn.microsoft.com/library/en-us/script56/html/vsfctCStr.asp

"En général, vous pouvez documenter votre code en utilisant des fonctions de conversion des types de données pour indiquer que le
résultat d'une opération doit être exprimé sous forme d'un type de données particulier plutôt que sous la forme du type de données
par défaut. Par exemple, utilisez la fonction CStr pour forcer le résultat à être exprimé sous forme d'un sous-type String."

Amicalement,

Jean - JMST
Belgium

"Alain CROS" a écrit dans le message de news:
Bonjour.

Tu a raison, l'erreur provient de la ligne suivante lorsque je fais afficher le nombre d'éléments contenus dans la collection
retournée par cette ligne.

Voici le code.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set objProcess = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2:Win32_Process")
objProcess.Create "C:Program FilesInternet ExplorerIExplore.exe", null, null, intProcessID
Msgbox "ProcessID = " & intProcessID, vbSystemModal
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessId = '" & intProcessID & "'")
' ("Select * from Win32_Process Where ProcessId = " & intProcessID)
' ("Select * from Win32_Process Where ProcessId = " & Cstr(intProcessID))
Msgbox intProcessID & vbnewline & colProcesses.Count
Wscript.Quit

Si je remplace la ligne par

Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'IExplore.exe'")

Je n'obtient pas d'erreur.

La question est donc :
Comment faire passer dans une requete, donc sous forme de texte, une variable numérique?

Merci.

Alain CROS

"Jean-Claude BELLAMY" a écrit dans le message de news:

Fais voir l'intégralité de ton script !

...

Donc l'erreur est ailleurs !







Avatar
Alain CROS
Bonjour.

Merci pour ta réponse.
Ton code ne fonctionne pas chez moi.
L'erreur obtenu est
Script : C:MonScript.vbs
Ligne : 7
Caract. : 1
Erreur : 0x80041017
Code : 80041017
Source :
Si je remplace
for each process in colProcesses
wscript.echo process.Description
next
par
msgbox colProcesses.Count
L'erreur obtenu est
Script : C:MonScript.vbs
Ligne : 7
Caract. : 1
Erreur : Erreur non reconnue
Code : 80004005
Source : SWbemObjectSet
Je pense que le problème vient du système d'exploitation Win98
Merci encore.

Alain CROS

"Jean-Claude BELLAMY" a écrit dans le message de news:

Il n'y a rien à faire de spécial !

Tu me sembles avoir un esprit vraiment compliqué ! ;+)


Ce script fonctionne parfaitement :



Avatar
Jean
Bonjour,

Peut être que iexplore.exe se trouve ailleurs que C:Program FilesInternet ExplorerIExplore.exe chez vous :-)

Amicalement,

Jean - JMST
Bekgium

"Alain CROS" a écrit dans le message de news:
Bonjour.

Merci pour ta réponse.
Ton code ne fonctionne pas chez moi.
L'erreur obtenu est
Script : C:MonScript.vbs
Ligne : 7
Caract. : 1
Erreur : 0x80041017
Code : 80041017
Source :
Si je remplace
for each process in colProcesses
wscript.echo process.Description
next
par
msgbox colProcesses.Count
L'erreur obtenu est
Script : C:MonScript.vbs
Ligne : 7
Caract. : 1
Erreur : Erreur non reconnue
Code : 80004005
Source : SWbemObjectSet
Je pense que le problème vient du système d'exploitation Win98
Merci encore.

Alain CROS

"Jean-Claude BELLAMY" a écrit dans le message de news:

Il n'y a rien à faire de spécial !

Tu me sembles avoir un esprit vraiment compliqué ! ;+)


Ce script fonctionne parfaitement :







Avatar
Alain CROS
Bonjour.

Le code de Jean-Claude.Bellamy me lance bien iexplore.exe mais c'est la collection de process qui n'est pas renseignée.
Si dans la requête je remplace intProcessId par un chiffre, je n'obtient pas d'erreur et colProcesses.Count = 0.
Je pense que le problème vient du couple WMI-Win98.
Merci pour vos réponses.

Alain CROS

"Jean" <http:// a écrit dans le message de news: #
Bonjour,

Peut être que iexplore.exe se trouve ailleurs que C:Program FilesInternet ExplorerIExplore.exe chez vous :-)

Amicalement,

Jean - JMST
Bekgium



1 2