index d'objet

Le
Th.A.C
Bonjour,

j'essaye de travailler sur une collection d'objet (liste des lecteurs de
cdrom) directement avec un indice, sans utiliser une boucle 'for each',
mais je n'arrive pas à trouver la syntaxe pour accéder directement au
premier objet. Pour l'instant j'en suis la:

-
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "ootcimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive")

wscript.echo "Nombre de lecteurs de cdroms: " & colitems.count
set lecteur = colItems.Item(1)
wscript.echo "1er lecteur: " & lecteur.Drive
-

merci
Thierry
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
F. Dunoyer [MVP]
Le #666498
Bonjour,

j'essaye de travailler sur une collection d'objet (liste des lecteurs de
cdrom) directement avec un indice, sans utiliser une boucle 'for each', mais
je n'arrive pas à trouver la syntaxe pour accéder directement au premier
objet. Pour l'instant j'en suis la:

-------------------------------------------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive")
wscript.echo "Nombre de lecteurs de cdroms: " & colitems.count
set lecteur = colItems.Item(1)
wscript.echo "1er lecteur: " & lecteur.Drive
-------------------------------------------
merci
Thierry


Sans être un expert du VB script, il me semble que le principe meme des
collections c'est de ne pouvoir être gérées que par les boucles for
each/next

--
François Dunoyer [MVP Windows Server / Security]
Jours après jours avec Longhorn Server
http://fds.mvps.org/LH/index.htm

Th.A.C
Le #666495

Sans être un expert du VB script, il me semble que le principe meme des
collections c'est de ne pouvoir être gérées que par les boucles for
each/next



j'en avais bien peur...
ca va alourdir bien inutilement mon script, tant pis...

merci pour ta réponse :-)

Gilles LAURENT
Le #666237
"Th.A.C" news:%
| Bonjour,

Bonjour,

| j'essaye de travailler sur une collection d'objet (liste des lecteurs
| de cdrom) directement avec un indice, sans utiliser une boucle 'for
| each', mais je n'arrive pas à trouver la syntaxe pour accéder
| directement au premier objet. Pour l'instant j'en suis la:
|
| -------------------------------------------
| strComputer = "."
| Set objWMIService = GetObject("winmgmts:" _
| & "{impersonationLevel=impersonate}!\" & strComputer &
| "rootcimv2")
|
| Set colItems = objWMIService.ExecQuery("Select * from
| Win32_CDROMDrive")
|
| wscript.echo "Nombre de lecteurs de cdroms: " & colitems.count
| set lecteur = colItems.Item(1)
| wscript.echo "1er lecteur: " & lecteur.Drive
| -------------------------------------------
|
| merci
| Thierry

WMI n'implémente que l'interface IEnumVariant. De ce fait, pour extraire
un élément d'une collection WMI, il est nécessaire d'utiliser les
boucles For Each / Next. En revanche, si le serveur COM implémente la
propriété Item de l'interface ICollection alors l'extraction d'un
élement d'une collection peut être réalisée via son index. Ci dessous un
exemple avec l'objet Shell.Application :

Set oShApp=CreateObject("Shell.Application")
Set colWindows=oshApp.Windows
WScript.Echo colWindows(0)

--
Gilles LAURENT
http://glsft.free.fr
F. Dunoyer [MVP]
Le #666236
Th.A.C avait soumis l'idée :

Sans être un expert du VB script, il me semble que le principe meme des
collections c'est de ne pouvoir être gérées que par les boucles for
each/next



j'en avais bien peur...
ca va alourdir bien inutilement mon script, tant pis...

merci pour ta réponse :-)


A moins que qelqu'un soit espiré ?
Sinon tu peux toujours lire ta collection dans un tableau et utiliser
le tableau pour les acces suivants.

--
François Dunoyer [MVP Windows Server / Security]
Jours après jours avec Longhorn Server
http://fds.mvps.org/LH/index.htm


Th.A.C
Le #666234

WMI n'implémente que l'interface IEnumVariant. De ce fait, pour extraire
un élément d'une collection WMI, il est nécessaire d'utiliser les
boucles For Each / Next. En revanche, si le serveur COM implémente la
propriété Item de l'interface ICollection alors l'extraction d'un
élement d'une collection peut être réalisée via son index. Ci dessous un
exemple avec l'objet Shell.Application :

Set oShApp=CreateObject("Shell.Application")
Set colWindows=oshApp.Windows
WScript.Echo colWindows(0)



Merci, je comprend mieux pourquoi ca ne marchait pas :-)

Gilles LAURENT
Le #666233
"Th.A.C" news:%
||
|| WMI n'implémente que l'interface IEnumVariant. De ce fait, pour
|| extraire un élément d'une collection WMI, il est nécessaire
|| d'utiliser les boucles For Each / Next. En revanche, si le serveur
|| COM implémente la propriété Item de l'interface ICollection alors
|| l'extraction d'un élement d'une collection peut être réalisée via
|| son index. Ci dessous un exemple avec l'objet Shell.Application :
||
|| Set oShApp=CreateObject("Shell.Application")
|| Set colWindows=oshApp.Windows
|| WScript.Echo colWindows(0)
||
|
| Merci, je comprend mieux pourquoi ca ne marchait pas :-)

En revanche, avec Vista et Longhorn, cette "limitation" est levée grâce
à l'introduction de la méthode ItemIndex d'une collection WMI
(SWbemObjectSet). Par exemple :

Set oWmi=GetObject("winmgmts:/root/cimv2")
Set colDrives=oWmi.ExecQuery("Select * from Win32_CDRomDrive")
Set oDrive = colDrives.ItemIndex(0)

--
Gilles LAURENT
http://glsft.free.fr
Publicité
Poster une réponse
Anonyme