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

Le serveur distant n'existe pas ou n'est pas disponible

5 réponses
Avatar
david
Bonjour à tous,

j'ai le message suivant "le serveur distant n'existe pas ou n'est pas
disponible.." lorsque je passe une deuxième fois dans la boucle for.
Pourtant à la fin de la boucle je mets set objwmiservice = nothing.
Voici le code :

-----------------------------------------------------------
For Each Computer in Container

strComputer = mid(Computer.name,4)

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")

For Each objItem in colItems

strUserConnect = objItem.UserName

Next

oSheet.Cells(1 + ix, 1).Value = strComputer
'oSheet.cells(1 + ix, 1).Value = Computer.dnsHostName
oSheet.Cells(1 + ix, 2).Value = Computer.Description
oSheet.Cells(1 + ix, 3).Value = Computer.operatingsystem & " - " &
Computer.operatingsystemversion
oSheet.Cells(1 + ix, 4).Value = Computer.operatingsystemservicepack
'pour obtenir la date de dernière mise à jour
'oSheet.Cells(1 + ix, 6).Value = Computer.WhenChanged
'oSheet.Cells(1 + ix, 5).Value = left(mid(Computer.managedby, 4),8)
oSheet.Cells(1 + ix, 5).Value = strUserConnect
oSheet.Cells(1 + ix, 6).Value = Computer.Location
oSheet.Cells(1 + ix, 7).Value = sAdrMac

ix = ix + 1

Set objWMIService = nothing
Set colItems = nothing

Next
------------------------------------------------------------

Avez vous une idée.

Merci

5 réponses

Avatar
Jérôme Cornier [MS]
Bonjour,

Déjà il y a une syntaxe bizarre : mid(Computer.name,4)
Pour moi Mid possède 3 paramètres : la chaîne, le départ, la longueur.

Avez-vous un "ON ERROR RESUME NEXT" dans la procédure (ou fonction) qui
contient ce morceau de code ? Si oui mettez la ligne en commentaire pour
vérifier les erreurs éventuelles du script.

D'autre part êtes-vous sûr que le second objet trouvé dans le container est
bien un ordinateur accessible ? (à contrôler avec ADSIEdit par exemple).

--
Cordialement,
_________________________________________________________
Jérôme Cornier
Microsoft Services France

"david" a écrit dans le message de news:

Bonjour à tous,

j'ai le message suivant "le serveur distant n'existe pas ou n'est pas
disponible.." lorsque je passe une deuxième fois dans la boucle for.
Pourtant à la fin de la boucle je mets set objwmiservice = nothing.
Voici le code :

-----------------------------------------------------------
For Each Computer in Container

strComputer = mid(Computer.name,4)

Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from
Win32_ComputerSystem")

For Each objItem in colItems

strUserConnect = objItem.UserName

Next

oSheet.Cells(1 + ix, 1).Value = strComputer
'oSheet.cells(1 + ix, 1).Value = Computer.dnsHostName
oSheet.Cells(1 + ix, 2).Value = Computer.Description
oSheet.Cells(1 + ix, 3).Value = Computer.operatingsystem & " - " &
Computer.operatingsystemversion
oSheet.Cells(1 + ix, 4).Value = Computer.operatingsystemservicepack
'pour obtenir la date de dernière mise à jour
'oSheet.Cells(1 + ix, 6).Value = Computer.WhenChanged
'oSheet.Cells(1 + ix, 5).Value = left(mid(Computer.managedby, 4),8)
oSheet.Cells(1 + ix, 5).Value = strUserConnect
oSheet.Cells(1 + ix, 6).Value = Computer.Location
oSheet.Cells(1 + ix, 7).Value = sAdrMac

ix = ix + 1

Set objWMIService = nothing
Set colItems = nothing

Next
------------------------------------------------------------

Avez vous une idée.

Merci


Avatar
david
Bonjour et merci,

1.Ma syntaxe mid fonctionne, je l'ai testé en faisant un wscript.echo
strcomputer et le nom de l'ordinateur ressort correctement.

2.Le second objet est bien accessible.

3. Sans rien toucher à mon script cela marche maintenant après redémarrage
du PC. l'objet setobjwmi ne devait pas être correctement réinitialiser.

4. Maintenant je cherche un moyen de savoir si l'ordi est allumé avant
d'initialiser le setobjwmi....
Avec le pingstatus peut être ????


"Jérôme Cornier [MS]" wrote:

Bonjour,

Déjà il y a une syntaxe bizarre : mid(Computer.name,4)
Pour moi Mid possède 3 paramètres : la chaîne, le départ, la longueur.

Avez-vous un "ON ERROR RESUME NEXT" dans la procédure (ou fonction) qui
contient ce morceau de code ? Si oui mettez la ligne en commentaire pour
vérifier les erreurs éventuelles du script.

D'autre part êtes-vous sûr que le second objet trouvé dans le container est
bien un ordinateur accessible ? (à contrôler avec ADSIEdit par exemple).

--
Cordialement,
_________________________________________________________
Jérôme Cornier
Microsoft Services France

"david" a écrit dans le message de news:

Bonjour à tous,

j'ai le message suivant "le serveur distant n'existe pas ou n'est pas
disponible.." lorsque je passe une deuxième fois dans la boucle for.
Pourtant à la fin de la boucle je mets set objwmiservice = nothing.
Voici le code :

-----------------------------------------------------------
For Each Computer in Container

strComputer = mid(Computer.name,4)

Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from
Win32_ComputerSystem")

For Each objItem in colItems

strUserConnect = objItem.UserName

Next

oSheet.Cells(1 + ix, 1).Value = strComputer
'oSheet.cells(1 + ix, 1).Value = Computer.dnsHostName
oSheet.Cells(1 + ix, 2).Value = Computer.Description
oSheet.Cells(1 + ix, 3).Value = Computer.operatingsystem & " - " &
Computer.operatingsystemversion
oSheet.Cells(1 + ix, 4).Value = Computer.operatingsystemservicepack
'pour obtenir la date de dernière mise à jour
'oSheet.Cells(1 + ix, 6).Value = Computer.WhenChanged
'oSheet.Cells(1 + ix, 5).Value = left(mid(Computer.managedby, 4),8)
oSheet.Cells(1 + ix, 5).Value = strUserConnect
oSheet.Cells(1 + ix, 6).Value = Computer.Location
oSheet.Cells(1 + ix, 7).Value = sAdrMac

ix = ix + 1

Set objWMIService = nothing
Set colItems = nothing

Next
------------------------------------------------------------

Avez vous une idée.

Merci







Avatar
Jacques Barathon [MS]
"Jérôme Cornier [MS]" wrote in message
news:
Bonjour,

Déjà il y a une syntaxe bizarre : mid(Computer.name,4)
Pour moi Mid possède 3 paramètres : la chaîne, le départ, la longueur.


Jérôme,

Quand tu ne lui passes que deux paramètres, la fonction mid () retourne la
chaîne passée en 1er paramètre à partir du Xe caractère, X étant le 2nd
paramètre. Par exemple:

mid ("1234567890", 4)

-> 4567890

Jacques

Avatar
Jean-Claude BELLAMY
Dans le message news: ,
Jérôme Cornier [MS] s'est ainsi exprimé:

Bonjour,

Déjà il y a une syntaxe bizarre : mid(Computer.name,4)
Pour moi Mid possède 3 paramètres : la chaîne, le départ, la longueur.


Le 3ème paramètre est facultatif !
Si on ne le précise pas, la fonction retourne TOUS les caractères à partir
du caractère de départ.

mid(Computer.name,4)
donne le même résultat que
mid(Computer.name,4,len(Computer.name)-3)

Par contre ce que je pige pas ici, c'est ce départ au 4ème caractère..
D'où provient cet objet "computer" ?
A quoi correspondent les 3 1ers caractères ?

Dans le cas d'un nom à syntaxe UNC, il commence par "" , donc c'est 2
caractères qu'il faut éliminer, et non pas 3...


Dans ce genre de circonstances, j'effectue TOUJOURS des "traces", du style :

For Each Computer in Container

strComputer = mid(Computer.name,4)
wscript.echo "strComputer =" & strComputer
...


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

Avatar
Jérôme Cornier [MS]
Bonjour,

Merci Jacques et Jean-Claude pour vos réponses.
Je n'étais pas sûr pour le 3e paramètre, dans mes script j'utilise plutôt un
Right pour obtenir une fin de chaîne ... par habitude ;-)

Je ne comprends pas moi non plus pourquoi supprimer les 3 premiers
carctères, mais il nous manque le reste du script. David utilise peut-être
des règles de dénominations qui lui sont propres ...

David : Pour le point 4, avez-vous essayé de récupérer le cide d'erreur
après initialisation de l'objet ? Si l'opération a échoué il y a forcément
un code différent de 0. par exemple :

If Err.Number <> 0 Then
...
End If
Err.Clear

Il y a aussi une chose qui n'est peut-être pas importante, mais dans le
doute je la mentionne : la libération des objets est à l'envers. J'aurai
d'abord réinitialisé la collection, puis ensuite l'objet WMIService ...
--
Cordialement,
_________________________________________________________
Jérôme Cornier
Microsoft Services France

"Jean-Claude BELLAMY" a écrit dans le
message de news: e%
Dans le message news: ,
Jérôme Cornier [MS] s'est ainsi exprimé:

Bonjour,

Déjà il y a une syntaxe bizarre : mid(Computer.name,4)
Pour moi Mid possède 3 paramètres : la chaîne, le départ, la longueur.


Le 3ème paramètre est facultatif !
Si on ne le précise pas, la fonction retourne TOUS les caractères à partir
du caractère de départ.

mid(Computer.name,4)
donne le même résultat que
mid(Computer.name,4,len(Computer.name)-3)

Par contre ce que je pige pas ici, c'est ce départ au 4ème caractère..
D'où provient cet objet "computer" ?
A quoi correspondent les 3 1ers caractères ?

Dans le cas d'un nom à syntaxe UNC, il commence par "" , donc c'est 2
caractères qu'il faut éliminer, et non pas 3...


Dans ce genre de circonstances, j'effectue TOUJOURS des "traces", du style
:

For Each Computer in Container

strComputer = mid(Computer.name,4)
wscript.echo "strComputer =" & strComputer
...


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