VBS sur poste distant
Boulette67
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
selrak Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
selrak Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous,
A lire tous les post portant sur sujet, je suis rassuré je ne suis pas le seul à rencontrer ce problème.
Je suis administrateur du domain (donc niveau droit c'est ok)
Sur les postes clients (en XP), j'ai un script vbs qui fait certaines modifications de la base de registre, ainsi que la sauvegarde de certains fichiers. Ce script fonctionne parfaitement en local. Le souci c'est de l'exécuter à distance.
J'ai trouvé un morceau de code :
NomOrdi : renseigné par un fichier texte qui contient les noms d'ordinateurs
CheminScript me pose déjà un soucis. Est ce que je dois mettre :
"\\" & NomOrdi & "\C$\Windows\monscript.vbs" ou
"C:\Windows\monscript.vbs"
Dans ma logique ce serai plus la 2ème vu qu'on tape directe sur le poste distant.
Mon 2ème souci est que ce l'un ou l'autre des chemins j'obtiens l'erreur 8
A lire tous les post portant sur sujet, je suis rassuré je ne suis pas le seul à rencontrer ce problème.
Je suis administrateur du domain (donc niveau droit c'est ok)
Sur les postes clients (en XP), j'ai un script vbs qui fait certaines modifications de la base de registre, ainsi que la sauvegarde de certains fichiers. Ce script fonctionne parfaitement en local. Le souci c'est de l'exécuter à distance.
J'ai trouvé un morceau de code :
Set objWMIService = GetObject("winmgmts:\\" & NomOrdi & "\root\cimv2:Win32_Process") Error = objWMIService.Create(CheminScript, null, null, intProcessID) If Error = 0 Then Wscript.Echo "PID : " & intProcessID & "." Else Wscript.Echo "Erreur : " & Error & "." End If
NomOrdi : renseigné par un fichier texte qui contient les noms d'ordinateurs
CheminScript me pose déjà un soucis. Est ce que je dois mettre :
"\\" & NomOrdi & "\C$\Windows\monscript.vbs" ou
"C:\Windows\monscript.vbs"
Dans ma logique ce serai plus la 2ème vu qu'on tape directe sur le poste distant.
Mon 2ème souci est que ce l'un ou l'autre des chemins j'obtiens l'erreur 8
A voir également:
- VBS sur poste distant
- Vbs windows - Accueil - Optimisation
- Vente la poste mobile - Accueil - Opérateurs & Forfaits
- Panne la poste aujourd'hui - Accueil - Services publics
- La poste est prête à prendre en charge votre envoi. dès qu'il nous sera confié, vous pourrez suivre son trajet ici. - Forum Consommation & Internet
- Envoyer un colis sans expéditeur la poste ✓ - Forum Loisirs / Divertissements
4 réponses
Me revoilou :)
Je viens de tomber sur un truc en me disant "Tiens avec un peu de chance ce qui me cause l'erreur ca vient de la" :
Même avec l'ajout (en gras ci-dessus), j'ai toujours la même erreur 8 et je n'arrive pas à identifier cette erreur.
Ca ne se voit pas mais je suis a genoux en train de vous supplier :) AIDER MOI!!!!!
Merci d'avance
Je viens de tomber sur un truc en me disant "Tiens avec un peu de chance ce qui me cause l'erreur ca vient de la" :
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & NomOrdi & "\root\cimv2:Win32_Process") Error = objWMIService.Create(CheminScript, null, null, intProcessID) If Error = 0 Then Wscript.Echo "PID : " & intProcessID & "." Else Wscript.Echo "Erreur : " & Error & "." End If
Même avec l'ajout (en gras ci-dessus), j'ai toujours la même erreur 8 et je n'arrive pas à identifier cette erreur.
Ca ne se voit pas mais je suis a genoux en train de vous supplier :) AIDER MOI!!!!!
Merci d'avance
tu peux connaitre ton erreur avec ce script:
on error resume next
err.raise 8
msgbox("Error:" & err.description)
chez moi, ca donne "Erreur d'execution inconnue" alors je crois que c'est peine perdu.
info :
Par le passer, j'ai cree un serveur avec des script vbs et des fichier .txt par lequel les script communicai . a savoir qu'il falait relier les ordi sur le groupe residentiel et partager les fichier txt sur le mode "read and write".les prog ecrivait sur le fichier .txt :
Date() & " " & Time()
CommandeAExecuter
#########
en vbs, la commande "ExecuteGlobal" sert a executer une commande de la valeur de la chaine a sa droite EX:
dim a, b
a = "msgbox(""Ca "
b = "marche"")"
executeglobal(a & b)
fera un msgbox "Ca marche" sans guillemet.Pour optenir le mot-de-passe du groupe residentiel tu fait click-droit sur l'onglet qui est a gauche sur le File Explorer. Dans ton prog, tu fait un executeglobal de la deuxieme chaine du .txt et sa te permetera de fait n'importequoi a distance.le script suivant est le script de mon serveur et il
est consu pour traiter les heures vbs ET Batch puisque les batch rajoute les centieme de sec. :
########## debut
'''''''Plusieur ligne sont trop longue pour la page internet fac elle se trouve sur 2 ligne comme celle-ci
dim ofso
dim file
dim start
set start = WScript.createobject("WScript.shell")
set ofso = WScript.createobject("scripting.filesystemobject")
dim temps' //contien l'envoie de la commande
dim commande' //commande qui etait dans le fichier text
dim analy' //reserver aux analyse
dim file2
dim file3
dim file4'//utiliser pour dire que la commande a ete recu
Dim Excel, GetMessagePos
do'//boucle continu
on error resume next
set file = ofso.opentextfile("\\#######PC\D\CommandeADistance\Commande.txt", 1)
do
on error resume next
analy = file.readline
if analy = "HOUR" then
set file4 = ofso.opentextfile("C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt", 2)
file4.writeline(date() & " " & time())
file4.close
set file4 = nothing
end if
temps = left(analy, 19)
temps = replace(temps, " ", " 0")
if temps <> (date() & " " & time()) then
exit do
end if
on error resume next
commande = file.readline
'////debut de l'analyse des commande///////////////////////////////////////////////////////////
analy = left(commande, 14)
if analy = "import-module " then
analy = replace(commande, "import-module ", "")
import("C:\Users\######\TrucA#######\Prog\CommandeADistance\Module\" & analy)
set file4 = ofso.opentextfile("C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt", 2)
file4.writeline(temps)
file4.close
set file4 = nothing
exit do
end if
on error resume next
executeglobal commande
set file4 = ofso.opentextfile("C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt", 2)
file4.writeline(temps)
file4.close
set file4 = nothing
WScript.sleep 800
'//////////////////////////////////////////////////////////////////
exit do
loop
if err.number <> 0 then
'msgbox err.number & chr(13) & err.description
err.clear
end if
file.close
set file = nothing
WScript.sleep 100
loop
Sub Import(strFile)
dim wshshell
set wshshell = createobject("WScript.shell")
Set objFs = CreateObject("Scripting.FileSystemObject")
strFile = WshShell.ExpandEnvironmentStrings(strFile)
strFile = objFs.GetAbsolutePathName(strFile)
Set objFile = objFs.OpenTextFile(strFile)
strCode = objFile.ReadAll
objFile.Close
'msgbox strcode
ExecuteGlobal strCode
End Sub
function ExitCar(chaine, car)
analy = left(chaine, car)
analy = right(analy, 1)
ExitCar = analy
end function
sub SetMousePosition(x, y)
Set Excel = Wscript.CreateObject("Excel.Application")
GetMessagePos = Excel.ExecuteExcel4Macro("CALL(""user32"",""GetMessagePos"",""J"")")
Excel.ExecuteExcel4Macro("CALL(""user32"",""SetCursorPos"",""JJJ"",""" & x & """,""" & y & """)")
end sub
################# fin du script
l'heure de l'ordi client doit etre devancer de 2 sec comparer a l'ordi serveur. C'est pour ca que lorsque "HOUR" est ecrit a la premiere ligne le script renvoie
Date() & " " & Time() dans un segon fichier txt afin que l'on puisse connaitre l'heure a distance.Pour ensuite recolter l'heure, tu fait un script PowerShell ".ps1" avec :
set -name ffgf -value 1
while($ffgf = 1) {
clear-host
get-content "C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt" | set -name heure
write-host $heure
}
n'oublie pas de debloquer les script PowerShell en demarent une invite (click droit et reclick droit puis sur "run as administrator") puis tu tape:
/>set-executionpolicy unrestrited
j'espere que tu as reussi a me suivre sur se gros commentaire de 2 KM.
:)
on error resume next
err.raise 8
msgbox("Error:" & err.description)
chez moi, ca donne "Erreur d'execution inconnue" alors je crois que c'est peine perdu.
info :
Par le passer, j'ai cree un serveur avec des script vbs et des fichier .txt par lequel les script communicai . a savoir qu'il falait relier les ordi sur le groupe residentiel et partager les fichier txt sur le mode "read and write".les prog ecrivait sur le fichier .txt :
Date() & " " & Time()
CommandeAExecuter
#########
en vbs, la commande "ExecuteGlobal" sert a executer une commande de la valeur de la chaine a sa droite EX:
dim a, b
a = "msgbox(""Ca "
b = "marche"")"
executeglobal(a & b)
fera un msgbox "Ca marche" sans guillemet.Pour optenir le mot-de-passe du groupe residentiel tu fait click-droit sur l'onglet qui est a gauche sur le File Explorer. Dans ton prog, tu fait un executeglobal de la deuxieme chaine du .txt et sa te permetera de fait n'importequoi a distance.le script suivant est le script de mon serveur et il
est consu pour traiter les heures vbs ET Batch puisque les batch rajoute les centieme de sec. :
########## debut
'''''''Plusieur ligne sont trop longue pour la page internet fac elle se trouve sur 2 ligne comme celle-ci
dim ofso
dim file
dim start
set start = WScript.createobject("WScript.shell")
set ofso = WScript.createobject("scripting.filesystemobject")
dim temps' //contien l'envoie de la commande
dim commande' //commande qui etait dans le fichier text
dim analy' //reserver aux analyse
dim file2
dim file3
dim file4'//utiliser pour dire que la commande a ete recu
Dim Excel, GetMessagePos
do'//boucle continu
on error resume next
set file = ofso.opentextfile("\\#######PC\D\CommandeADistance\Commande.txt", 1)
do
on error resume next
analy = file.readline
if analy = "HOUR" then
set file4 = ofso.opentextfile("C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt", 2)
file4.writeline(date() & " " & time())
file4.close
set file4 = nothing
end if
temps = left(analy, 19)
temps = replace(temps, " ", " 0")
if temps <> (date() & " " & time()) then
exit do
end if
on error resume next
commande = file.readline
'////debut de l'analyse des commande///////////////////////////////////////////////////////////
analy = left(commande, 14)
if analy = "import-module " then
analy = replace(commande, "import-module ", "")
import("C:\Users\######\TrucA#######\Prog\CommandeADistance\Module\" & analy)
set file4 = ofso.opentextfile("C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt", 2)
file4.writeline(temps)
file4.close
set file4 = nothing
exit do
end if
on error resume next
executeglobal commande
set file4 = ofso.opentextfile("C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt", 2)
file4.writeline(temps)
file4.close
set file4 = nothing
WScript.sleep 800
'//////////////////////////////////////////////////////////////////
exit do
loop
if err.number <> 0 then
'msgbox err.number & chr(13) & err.description
err.clear
end if
file.close
set file = nothing
WScript.sleep 100
loop
Sub Import(strFile)
dim wshshell
set wshshell = createobject("WScript.shell")
Set objFs = CreateObject("Scripting.FileSystemObject")
strFile = WshShell.ExpandEnvironmentStrings(strFile)
strFile = objFs.GetAbsolutePathName(strFile)
Set objFile = objFs.OpenTextFile(strFile)
strCode = objFile.ReadAll
objFile.Close
'msgbox strcode
ExecuteGlobal strCode
End Sub
function ExitCar(chaine, car)
analy = left(chaine, car)
analy = right(analy, 1)
ExitCar = analy
end function
sub SetMousePosition(x, y)
Set Excel = Wscript.CreateObject("Excel.Application")
GetMessagePos = Excel.ExecuteExcel4Macro("CALL(""user32"",""GetMessagePos"",""J"")")
Excel.ExecuteExcel4Macro("CALL(""user32"",""SetCursorPos"",""JJJ"",""" & x & """,""" & y & """)")
end sub
################# fin du script
l'heure de l'ordi client doit etre devancer de 2 sec comparer a l'ordi serveur. C'est pour ca que lorsque "HOUR" est ecrit a la premiere ligne le script renvoie
Date() & " " & Time() dans un segon fichier txt afin que l'on puisse connaitre l'heure a distance.Pour ensuite recolter l'heure, tu fait un script PowerShell ".ps1" avec :
set -name ffgf -value 1
while($ffgf = 1) {
clear-host
get-content "C:\Users\######\TrucA#######\Prog\CommandeADistance\Text.txt" | set -name heure
write-host $heure
}
n'oublie pas de debloquer les script PowerShell en demarent une invite (click droit et reclick droit puis sur "run as administrator") puis tu tape:
/>set-executionpolicy unrestrited
j'espere que tu as reussi a me suivre sur se gros commentaire de 2 KM.
:)