2009-10-27 5 views
0

J'ai un script VB qui doit exécuter psexec pour lancer une application appelée md5 sur un serveur distant. Md5 génère une clé de hachage d'un fichier et prend un paramètre - le chemin du fichier \ nom. J'ai besoin de récupérer la clé has qui est générée pour stocker dans une variable. Ci-dessous le code que j'utilise:Psexec ne génère pas de fichier journal dans le script VB

Set objShell = CreateObject("Wscript.Shell") 
strcomputer = "remotecomputer" 
tempDest = "C:\somedir" 
filename = "somefile" 

strCommand = "psexec -accepteula \\" & strcomputer & " -c md5.exe " & tempDest & "\" & filename & " > log.txt" 
Set objExecObject = objShell.Exec("%comspec% /c " & strCommand) 
Do While objExecObject.Status <> 1 'loop until previous process has finished 
WScript.Sleep 100 
Loop 

La commande MD5 est exécutée mais rien n'est écrit dans le fichier journal. Lorsque je copie et collez strCommand (en substituant toutes les variables pour les données réelles) dans une invite cmd et l'exécutez, il écrit avec succès la sortie de Md5 dans le fichier journal.

À la fin de la journée, j'ai juste besoin de la sortie de Md5, si quelqu'un connaît un meilleur moyen que de l'écrire dans un fichier journal s'il vous plaît faites le moi savoir. J'ai déjà essayé d'utiliser objExecObject.StdOut.Readall() pour essayer d'attraper la sortie qui a abouti à des échecs aléatoires - parfois, il attraperait la sortie, parfois il ne le ferait pas, sans rien changer dans le script.

+0

Voir cette réponse et répondre: http://stackoverflow.com/questions/1399191/psexec-redirect-output-to-local-file –

+0

Bonjour, j'ai déjà cmd/c dans ma commande ("% comspec%/c "). Le fichier log.txt est créé sur la machine locale par le script VB mais rien n'y est écrit. Lorsque je cours à partir de l'invite cmd, il crée et écrit dans log.txt. – VBscripter

Répondre

0

Juste une supposition: Êtes-vous sûr de ce que le répertoire actuel est lorsque le script est en cours d'exécution? Essayez de donner un chemin absolu au fichier journal et voyez si cela aide.

+0

Hi Anders Le fichier log.txt est créé, mais il est vide. Rien n'y est écrit. Cependant, lorsque j'exécute exactement la même commande manuellement à partir de cmd, la clé de hachage est écrite dans log.txt. – VBscripter

0

J'ai trouvé une solution pour cela. Au lieu d'utiliser le code suivant:

strCommand = "psexec -accepteula \\" & strcomputer & " -c md5.exe " & tempDest & "\" & filename & " > log.txt" 
Set objExecObject = objShell.Exec("%comspec% /c " & strCommand) 
Do While objExecObject.Status <> 1 'loop until previous process has finished 
WScript.Sleep 100 
Loop 

je ceci:

strCommand = "psexec -accepteula \\" & strcomputer & " -c md5.exe " & tempDest & "\" & filename & " > log.txt" 
objShell.Run "%comspec% /c " & strCommand, 0, true 

Le script est maintenant réoriente log.txt correctement.