[..] commande WMIC qui ne renvoie rien

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

[..] commande WMIC qui ne renvoie rien

#1

Message par GhostLine »

Hello all !

Ça faisait une paye, voire un solde de tout compte ;)

Voilà mon problème : j'essaye de récupérer la quantité de mémoire dans une machine distante, pour définir la taille du swap sur cette machine, mais impossible de collecter cette valeur tant que la ligne de commande est lancée à partir du script AutoIt.

Faites le test, c'est amusant : en générant le fichier et en le lançant à partir du script compilé, ou en lançant le .bat généré à la main, vous ne devriez pas obtenir le même résultat (en fait, la quantité de mémoire apparaîtra dans le deuxième cas, en plus du reste).

J'ai tenté pas mal de choses, mais sans succès ...

Code : Tout sélectionner

#AutoIt3Wrapper_Change2CUI=y
$path = "c:\windows\pstools\"
$ip_cible = $CmdLine[1]
		
$batch = FileOpen(@ScriptDir & "\toto.bat", 2)
FileWrite($batch, '"' & $path & 'PsExec.exe" \\' & $ip_cible & ' -accepteula -u administrator -p password wmic ComputerSystem get TotalPhysicalMemory' & @CRLF)
FileClose($batch)
$toto = RunWait('"' & @ScriptDir & '\toto.bat" > toto.txt',"","", $STDERR_CHILD + $STDOUT_CHILD)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] commande WMIC qui ne renvoie rien

#2

Message par jguinch »

J'ai pas essayé ton script, mais tu peux aussi essayer sans passer par Psexec :
Local $oLocator = ObjCreate("WbemScripting.SWbemLocator")
Local $oWMI = $oLocator.ConnectServer($ip_cible, "root\cimv2",  $sUsername, $sPassword)

Local $oWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $ip_cible & "\root\cimv2")
Local $oSystemInfos = $oWMIService.ExecQuery("select * from Win32_ComputerSystem")
For $oInfo In $oSystemInfos
   ConsoleWrite($oInfo.TotalPhysicalMemory)
Next
Sinon, avec WMIC, tu peux spécifier la machine distant avec /NODE et le login/mdp avec /USER et /PASSWORD. C'est peut-être plus simple qu'avec PSEXEC..
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] commande WMIC qui ne renvoie rien

#3

Message par GhostLine »

Hello,

Merci pour ta réponse !

J'ai fait le test avec ce bout de code seul :

Code : Tout sélectionner

$ip_cible = InputBox("", "Adresse :")
Local $oLocator = ObjCreate("WbemScripting.SWbemLocator")
Local $oWMI = $oLocator.ConnectServer($ip_cible, "root\cimv2", "Administrator", "P@ssw0rd")

Local $oWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $ip_cible & "\root\cimv2")
Local $oSystemInfos = $oWMIService.ExecQuery("select * from Win32_ComputerSystem")
For $oInfo In $oSystemInfos
	MsgBox(0, "", $oInfo.TotalPhysicalMemory)
Next
Et je me fais malheureusement rembarrer :

Code : Tout sélectionner

"C:\Users\ghostline\Documents\Autoit\Client\Divers\swap.au3" (36) : ==> Variable must be of type "Object".:
Local $oSystemInfos = $oWMIService.ExecQuery("select * from Win32_ComputerSystem")
Local $oSystemInfos = $oWMIService^ ERROR
Je dois être (comme d'hab) très c*n, mais n'étant pas (encore) très familier avec les objets WMI et leur manipulation ...
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] commande WMIC qui ne renvoie rien

#4

Message par jguinch »

tu as essayé avec WMIC et les différents paramètres (pour éviter l'utilisation de psexec) ?
Si je trouve un moment demain, je teste ça (je te promets rien...)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] commande WMIC qui ne renvoie rien

#5

Message par GhostLine »

J'ai trouvé la commande qui permet de déclencher directement à distance la demande :

Code : Tout sélectionner

wmic /node: [adresse IP ou nom de la machine] /user: [username] /password: [password] [commande à exécuter]
Je l'ai testée à la main (ça fonctionne) mais pas encore dans un script (un peu short dans le temps).
Répondre