IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

execution d'un script (excel) depuis serveur


Sujet :

VBScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut execution d'un script (excel) depuis serveur
    Bonjour,

    mon script fait appel à de l'excel.
    je dois l'executer depuis le serveur d'entreprise, mais voila l'oject excel ne peut pas etre créé car office n'est pas installé sur le serveur (normal).

    ma question y a t'il une combine comme une DLL à placer ou autre chose pour povoir l'executer ?

    Merci d'vance pour votre aide

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je ne pense pas, je pense que tu es obligé de l'installer.
    S'il y a une combien, tu la trouveras sur le site de microsoft.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    en utilisant un ADO et en convertissant le .xls en .CSV, penses tu que se soit realisable ?

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je crois qu'il va falloir que tu explicites ce que tu veux dire par :
    mon script fait appel à de l'excel.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    voila, le script doit tourner sur serveur win2003, il fait appel à un fichier .XLs situé sur un autre serveur.

    le script scan des log et en fonction des logs il ouvre le fichier excel et ecrit une valeur à l'interieur.

    voila un morceau de code pour ma methode de connexion.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set xlapp = CreateObject("Excel.Application")  'créé une instance Excel
    Set xlBook = xlapp.Workbooks.Open ("\\serveur\unite logique$\repertoire\fichier.xls") 'Ouverture du gestionnaire de feuilles Excel
    Set xlSheet = xlBook.Sheets(tbmois(tbDate(1))) 'Positionnement sur la xlSheet du mois en cour
    Set fso = CreateObject("Scripting.FileSystemObject") 'declaration de la creation d'un objet FSO
    voici le message d'erreur qui m'est renvoyé

    "un composant ActiveX ne peut pas créer un objet :"excel.application" "

    l'erreur est positionnée ligne 25 soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlapp = CreateObject("Excel.Application")

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par micka180 Voir le message
    en utilisant un ADO et en convertissant le .xls en .CSV, penses tu que se soit realisable ?
    Je pense qu'en utilisant ADO tu peux travailler sur des fichiers Excel pour autant qu'ils soient organisés comme des bases de données.

    Il y a une contribution de SilkyRoad à ce sujet.
    http://silkyroad.developpez.com/VBA/ClasseursFermes/
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    je tente une connexion vias ado sur le fichier xls.

    (je developpe sur Primalscript)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim cn as ADODB.Connection '(le as n'apparait pas en bleu chez moi)
    Set cn = New ADODB.Connection
    With cn
    	.Provider = "Microsoft.Jet.OLEDB.4.0"
    	.ConnectionString = "Data Source=D:\suivi bilan journalier.xls;" & _
    "Extended Properties=Excel 8.0;"
    	.Open
    End With
     
     
    strQuery = "SELECT * FROM [D:\suivi bilan journalier.xls$]"
    et j'ai un retour d'erreur sur ma premiere ligne "Erreur de compilation Microsoft VBScript: Fin d'instruction attendue"

    je ne comprend pas vraiment ce qu'attend le compilateur ?

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cn as ADODB.Connection
    Ce n'est pas du VBS, c'est du VB, en VBS :
    Pour en savoir plus regarde la
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    Bon j'ai donc décidé de changer de tactique en lisant la FAQ, pour quelque chose de plus simple.

    J’essai maintenant de lancer un script en tache planifier depuis un serveur qui va exécuter mon script d'origine sur mon poste (qui lui a office d'installé).
    Mais j'ai un message d'erreur.

    "WshShell.Run: Impossible d'attendre pour le traitement" erreur sur ligne 2

    je ne comprend pas ce que cela signifi, sur un forum on parle d'installer Windows Scripting ?

    voici le code qui pourtant ne me parait pas complexe (mais je sent que je me rapproche du but par ce system)

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Return = WshShell.Run(" Cscript.exe \\mon_poste.domaine\D$\mon_fichier.vbs",1,true)
    MsgBox "Fin utilisation du script"

  10. #10
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    salut,
    mais je sent que je me rapproche du but par ce system)
    je te le souhaite
    pour exécuter un script sur une station distante, il faut utiliser l'objet WshRemote et non l'objet WshShell...
    tout ça est bien expliqué dans la doc en français
    (lien de téléchargement dans la )
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Tu peux aussi utiliser WMI.
    La FAQ explique ce que c'est et donne un liens vers la doc en ligne de WMI
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    j'ai chercher dans la faq VBS mais je n'ai pas trouvé de wshremote.
    sur msdn j'ai trouvé de la doc mais je ne m'en sort pas.

    j'ai besoin d'un coup de pouce svp

    j'ai constamant une erreur ; Un composant ActiveX ne peut pas créer un objet

    code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim Controller, RemoteScript
     
    Set Controller = WScript.CreateObject("WSHController")
     
    Set RemoteScript = Controller.CreateScript("mon fichier.vbs", "\\poste.domaine")
     
    RemoteScript.Execute
     
     
     
    Do While RemoteScript.Status <> 2 
     
    WScript.Sleep 100
     
    Loop

  13. #13
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Salut,

    voici une fonction qui me permet de lancer un process sur une machine distante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Function CreateProcess(szCommande, szPioute, szNomAdm, szMDPAdm) 
     
       Dim objProcesses 
       Dim objLocator 
       Dim objService 
       Dim lngRet 
       Dim lngPID 
       Dim MesStr 
     
       Set objLocator = CreateObject("WbemScripting.SWbemLocator") 
       Set objService = objLocator.ConnectServer(szPioute, , szNomAdm, szMDPAdm) 
     
       Set objProcesses = objService.Get("Win32_Process") 
     
       lngRet = objProcesses.Create(szCommande, Null, Null, lngPID) 
     
       Set objProcesses = Nothing 
       Set objService   = Nothing 
       Set objLocator   = Nothing 
     
       CreateProcess = lngPID 
     
    End Function
    Avec :

    szCommande = commande à envoyer
    szPioute = nom de la machine à attaquer à distance
    szNomAdm = compte autorisé à démarrer un process sur la machine distante (idéallement un compte Admin)
    szMDPAdm = mot de passe du compte

    Ca marche très bien dans mon contexte et pour les commandes que j'envoie sur mes machines, mais je ne sais pas si tu pourras l'adapter à ce que tu veux obtenir.

    A++
    Plus tu pédales moins vite, moins t'avances plus vite.

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    je souhaite executer un fichier vbs, mais je vais quand meme tenter merci.
    je ne suis plus à une tentative prée.

  15. #15
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    morche pas puah

  16. #16
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Tu as mis quoi dans ta variable szCommande ?

    As tu fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    szCommande  = "Cmd /c CScript nom_du_Vbs.Vbs"
    Plus tu pédales moins vite, moins t'avances plus vite.

  17. #17
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ici les explications pour se connecter à un poste distant avec WMI :
    http://msdn2.microsoft.com/en-us/library/aa389290.aspx
    La des exemples de codes sur les processus :
    http://msdn2.microsoft.com/en-us/library/aa394599.aspx
    Tu combine tout cela avec l'exemple de RadPAT et tu devrais réussir à faire ce que tu souhaites.

    Et puis tu peux essayer cela (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim processus
    Set objWMIService = GetObject("winmgmts:\\" & AdresseIP_du_PC & "\root\cimv2:Win32_Process")
    processus = objWMIService.Create ("Le nom du processus", null, "Je crois me souvenir qu'il faut mettre un numero pour le PID")
    Mais attention, je ne me connecte pas avec SWbemLocator -> dans mon cas, l'utilisateur courant est utilisé pour la connexion, avec SWbemLocator par contre tu peux choisir ton utilisateur.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  18. #18
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    merci pour vos infos je vais les testers et chercher aussi à faire de par moi meme avec les kiens que tu ma donné ced600

    Merci

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Heu comme je ne sais pas si les changements sur le poste sont alertés comme un nouveau commentaire, je met un commentaire pour que tu regarde les changement que j'ai apporté sur le code.
    En effet, je n'avais pas bien nétoyé le code, il restait l'appel d'une fonction d'un script perso.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  20. #20
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    bonjour et merci pour la modification du code.

    j'ai appliqué le code sur le script que j'ai placé sur le serveur.

    voici le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim processus
    Dim lngRet
    Dim szCommande
    Dim machine
     
    machine = xxxxxx
     
    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objServices = objLocator.ConnectServer _
    			(machine, "root\cimv2", "domaine\loggin", "mot de passe")
    	objServices.Security_.ImpersonationLevel = 3
     
     
     
    Set objWMIService = GetObject ("winmgmts:\\d$\repertoire\fichier.Vbs" & machine & "\root\cimv2:Win32_Process")
    processus = objWMIService.Create ("WScript.exe", null, "2588")

    mais j'optien un message derreur 80041064 sur le serveur du type

    les references utilisateur ne peuvent pas etre utilisaées pour des connexions locales

    j'ai vu sur le net http://manageengine.adventnet.com/pr...ting-guide.doc
    qu'une solution été de supprimer le login et le password de ma ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set objServices = objLocator.ConnectServer _
    			(machine, "root\cimv2", "domaine\loggin", "mot de passe")
    ce que j'ai fais sans succès

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Execution d'un script .sh sur serveur.
    Par Nemesium dans le forum Langage
    Réponses: 3
    Dernier message: 17/04/2014, 08h25
  2. execution d'un script bash depuis PHP
    Par eki33 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2012, 13h40
  3. [MySQL] temps d'execution d'un script sur un serveur web
    Par cerco1 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/10/2011, 18h30
  4. Execution d'un script VBA depuis un lien HTML
    Par Mattius007 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 07/02/2008, 16h58
  5. Execution d'un script shell depuis un code C
    Par aproust dans le forum C
    Réponses: 6
    Dernier message: 12/05/2006, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo