La tentative de copie de fichier d'un PC XP à l'autre à l'aide de WMI, depuis RPC et de l'UNC ne sont pas disponibles
Je suis nouveau sur VBScript. Je ne peux pas trouver un moyen de copier des fichiers à partir d'un XP hôte à un autre à l'aide de WMI dans un VBS. La manière habituelle de copie de fichiers (RPC Remote Procedure Call, SMB, UNC) ne sont pas disponibles pour plusieurs hôtes, mais WMI est disponible pour tous les hôtes, et j'ai besoin de copier des fichiers à partir de mon admin hôte à une cible hôte Windows. Je pensais trouver un exemple de code, mais j'ai trouvé aucune info sur elle. N'ai rien trouvé à me dire qu'il ne peut pas être fait, soit.
Les fichiers source sont un exécutable et 'test1.txt" dans mon ordinateur de l'administrateur "F:\TEMP' dossier. Je veux mettre les fichiers sur l'hôte distant HOST1 "C:\TEMP' dossier. J'en ai plein les droits d'admin sur les deux hôtes. Voici ce que j'ai à ce jour, juste pour un fichier (pour faire le test simple):
strComputer = "HOST1"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery( _
"Select * from Win32_Directory where Name = 'c:\\temp'")
For Each objFiles in colFiles
errResults = objFolder.Copy("f:\temp\test1.txt")
Wscript.Echo errResults
Next
thx Boo, mais ce lien ne veut pas dire que les méthodes sur la copie de fichiers vers un autre ordinateur hôte à l'aide de WMI
Où est
objFolder
déclaré? Cela pourrait être une mauvaise var nom? Aussi, je ne suis pas familier avec VB script, mais cela ressemble à de la copie d'un seul et même fichier dans une boucle, ce qui est étrange. (Je ne suis pas à la traîne, tout en s'assurant d'autres erreurs n'entraînent pas le problème)OriginalL'auteur Lizz | 2012-08-01
Vous devez vous connecter pour publier un commentaire.
J'ai appris que WMI ne peut pas créer des fichiers sur un ordinateur distant, et il est impossible de copier des fichiers sur un réseau de connexion:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa389288%28v=vs.85%29.aspx
Cependant, il peut exécuter une commande de processus. Voici Frank White code en C sharp, suivi par son exemple:
https://stackoverflow.com/a/8913231/1569434
Vous aurez besoin de quatre choses à utiliser tous les scriptlets, qui appuient les uns sur les autres à utiliser psexec pour exécuter un "normal" VBScript ou script de commandes sur l'hôte distant:
Remarque importante: Ne PAS utilisation DFS à la carte du réseau action! Il sera échouer si vous utilisez le Système de Fichiers Distribués pour votre partage réseau. Un code d'erreur que vous pourriez obtenir en fonction de comment vous essayez est "Erreur système 1312", n'importe quel système d'exploitation (par exemple, XP, Win 7) que vous utilisez.
Lors de la RPC n'est pas disponible sur un hôte distant, mais WMI est le cas, alors la méthode suivante va créer un local de fichier ASCII sur l'hôte distant est c:\temp dossier contenant le texte "myTextCommands", sans les guillemets.
Avis de la limitation importante dans le script ci-dessus: il ne peut créer des fichiers ASCII - pas binaire.
Nous allons utiliser cette technique pour mapper une lettre de lecteur:
où "strRemoteLog" est défini comme "c:\temp\MyLog.txt", "strPassword" est invité (voir texte intégral de script d'exemple et de référence à fond), et "errProcess" est un sous-programme qui exécute le processus suivant à l'aide de la "cmd /c" truc mentionnés ci-dessus:
Avec un lecteur réseau mappé, copie de votre script à l'hôte:
SCRIPT1.chauve-souris est prêt, commencez donc par psexec contre sur l'hôte distant, en passant votre script une variable strUserID qui serait obtenu précédemment et ici, par exemple:
Une fois psexec finitions, vous voudrez peut-être enregistrer les résultats. Si vous renommez le fichier journal, vous la téléchargez, annuler le mappage de votre lecteur, et de nettoyer les fichiers résiduels:
Vous avez terminé. Vous avez correctement mappé un lecteur, d'exécuter une routine de script contre l'hôte distant, et téléchargé à sa sortie.
Remarque: cette méthode fonctionne également sur Windows 7 et Windows 2008 avec l'UAC.
Voici le plein "échantillon" de script intégré. N'hésitez pas à suggérer des correctifs, améliorations, etc.
vous avez été la source d'inspiration, Frank, de sorte que je vous remercie! 🙂
OriginalL'auteur Lizz
Tout d'abord, je pense qu'il y a une faute de frappe dans votre code où vous avez écrit:
Je pense que vous vouliez dire:
Deuxièmement, je ne sais pas si ce que vous essayez de faire est possible. Je pense que le code que vous avez peut copier un fichier à partir d'un répertoire sur l'ordinateur distant vers un autre répertoire sur l'ordinateur distant.
Pour une solution si, si WMI est disponible à distance sur tous les ordinateurs, ce qui signifie qu'au moins un port est ouvert. Si c'est le cas, existe-il d'autres ports qui sont ouverts? Si oui, peut-être que vous pourriez mettre en place un serveur FTP sur votre administrateur de l'hôte sur le port X et ensuite les autres hôtes envoyer le fichier par l'automatisation de la valeur par défaut XP client FTP.
OriginalL'auteur Hans Olsson
Je sais que cette question est ancienne, mais il est venu à travers, c'est quand j'ai essayé de trouver une solution afin pensé serait de diriger les gens vers une réponse que j'ai écrit et posté ici:
.NET - la Copie d'un fichier exécutable à travers le réseau local à un autre ordinateur, et l'exécution
En bref, il est possible d'écho en base64 de la conversion de n'importe quel fichier (y compris un exe) à l'aide de WMI et puis le décoder avec certutil.
OriginalL'auteur Robert MacMillan
Avez-vous essayé le suivant ?
OriginalL'auteur peter
WMI est une base de données de l'information. Vous ne pouvez pas l'utiliser pour copier des fichiers.
OriginalL'auteur Vishal D