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

WinDev Discussion :

Execution script powershell depuis windev


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut Execution script powershell depuis windev
    Bonjour,

    Je génère un script powershell depuis windev mais il refuse de s'executer.

    J'ai bien passé l’exécution des scripts en unrestricted, tenté de lancer l'exe windev en mode admin et le script marche si je le lance depuis l'explorateur windows.

    Voici mon 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Procedure executeUpdateLocationPrinter(nomServeurImprimante est une chaîne, nomImprimante est une chaîne, nouvelEmplacement est une chaîne)
     
    idFic est un entier
    cheminFichierPowershell est une chaîne
     
    maCommandePowershell est une chaîne = [
    Get-ExecutionPolicy
    $printer = Get-WmiObject win32_printer -ComputerName %1 | Where-Object {$_.name -eq "%2"}
    $printer.Location = "%3"
    $printer.put()
    Read-Host "Press ENTER"
    ]
     
    QUAND EXCEPTION DANS
     
    maCommandePowershell = ChaîneConstruit(maCommandePowershell,nomServeurImprimante,nomImprimante,nouvelEmplacement)
    cheminFichierPowershell = fRepTemp() + [fSep] + "PS_changePrinterLocation.ps1"
    idFic = fCrée(cheminFichierPowershell) 
     
    SI idFic <> -1 ALORS
    fEcrit(idFic,maCommandePowershell)
    fFerme(idFic)
    LanceAppli("powershell "+cheminFichierPowershell)
    fSupprime(cheminFichierPowershell)
    FIN
     
    FAIRE
    ExceptionPropage()
    FIN
    Si quelqu'un a une idée de comment l’exécuter, ou de comment le traduire en VBScript je suis fortement prenneur.

    Merci d'avance,

    Bon dev

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    1. Plutôt que fcree(), fecrit() , fferme(), tu peux passer par fsauveTexte() , ce sera plus compact. Mais à priori, cette partie là de ton code est correcte.

    2. J'utilise plutôt DDELance(...) ; Je ne connais pas la différence entre DDELance() et LanceAppli(), mais je n'ai pas de souci particulier avec DDELance().
    Ou sinon , LanceAppliAssociée( repertoire + "PS_changePrinterLocation.PS1" ) , c'est très bien aussi. Ca revient très exactement au double-clic sur un fichier dans l'explorateur Windows.

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Merci pour le fSauveTexte, j'avais oublié la nom de la fonction donc je l'avais fais a l'ancienne.

    J'ai testé le lanceAppliAssocié et j'ai le même problème. Il me dis que j'ai pas le droit d’exécuter le script alors que mon système est paramétrés en unrestricted et que si je clique sur le .ps1 ça marche. Pareil avec DDELance, que j'avais déjà tester. Pareil en mettant l'appel dans un .bat. Je désespère ...

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    ???
    Si tu crées un .BAT , si tu lances ce .BAT en mode console ou en double-cliquant, ça marche, et si tu lances ce .BAT par DDELance() dans Windev, ça ne marche pas, c'est ça que je comprend ?
    Ca me paraît bizarre.
    As tu essayé sur un autre ordi ?
    Ceci étant, je ne sus vraiment pas doué dans toutes ces questions d'administration. Je ne vais pas pouvoir t'aider plus.

    Mais si par hasard des pointures passent par là, ils ne te répondront pas, parce que tu as oublié 2 info qui me paraissent essentielles : Quelle version Windows tu as, et quelle version de Windev.

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 212
    Par défaut
    hello,
    attention à la protection d'exécution de scripts powershell.
    Avec le code suivant sous windows 7 windev 16 :
    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
    cheminFichierPowershell est une chaîne
    maCommandePowershell est une chaîne = [
    Get-ExecutionPolicy
    Read-Host "Press ENTER"
    $printer = Get-WmiObject win32_printer -ComputerName %1 | Where-Object {$_.name -eq "%2"}
    $printer.Location = "%3"
    $printer.put()
    Read-Host "Press ENTER"
    ]
     
    QUAND EXCEPTION DANS	
    	cheminFichierPowershell = "f:\temp\"  + "PS_changePrinterLocation.ps1"
    	maCommandePowershell = ChaîneConstruit(maCommandePowershell,"localhost","Fax","NewLocation")
    	SI fSauveTexte(cheminFichierPowershell,maCommandePowershell) ALORS
    		SI LanceAppli("C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe  -noexit  -command " + cheminFichierPowershell,exeActif,exeBloquant) = Faux ALORS
    			Erreur(ErreurInfo())			
    		FIN
    	//	fSupprime(cheminFichierPowershell)
    	FIN
     
    FAIRE
    	ExceptionPropage()
    FIN
    j'obtiens la fenêtre du haut , en double cliquant sur le fichier script l'image du bas :
    Nom : Powershell.png
Affichages : 5851
Taille : 16,8 Ko

    Ami calmant, J.P

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    attention à la protection d'exécution de scripts powershell.
    Avec le code suivant sous windows 7 windev 16 :
    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
    cheminFichierPowershell est une chaîne
    maCommandePowershell est une chaîne = [
    Get-ExecutionPolicy
    Read-Host "Press ENTER"
    $printer = Get-WmiObject win32_printer -ComputerName %1 | Where-Object {$_.name -eq "%2"}
    $printer.Location = "%3"
    $printer.put()
    Read-Host "Press ENTER"
    ]
     
    QUAND EXCEPTION DANS	
    	cheminFichierPowershell = "f:\temp\"  + "PS_changePrinterLocation.ps1"
    	maCommandePowershell = ChaîneConstruit(maCommandePowershell,"localhost","Fax","NewLocation")
    	SI fSauveTexte(cheminFichierPowershell,maCommandePowershell) ALORS
    		SI LanceAppli("C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe  -noexit  -command " + cheminFichierPowershell,exeActif,exeBloquant) = Faux ALORS
    			Erreur(ErreurInfo())			
    		FIN
    	//	fSupprime(cheminFichierPowershell)
    	FIN
     
    FAIRE
    	ExceptionPropage()
    FIN
    j'obtiens la fenêtre du haut , en double cliquant sur le fichier script l'image du bas :
    Nom : Powershell.png
Affichages : 5851
Taille : 16,8 Ko

    Ami calmant, J.P
    Justement c'est exactement mon problème. Et même en passant la politique d’exécution des scripts à unrestricted, il ne veux pas lancer le script depuis mon programme. Peut être qu'on ne peut tout simplement pas lancer de powershell depuis un exécutable, ou alors il faudrait réussir à signer le script.

    Merci beaucoup pour vos réponses.

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    ???
    Si tu crées un .BAT , si tu lances ce .BAT en mode console ou en double-cliquant, ça marche, et si tu lances ce .BAT par DDELance() dans Windev, ça ne marche pas, c'est ça que je comprend ?
    Ca me paraît bizarre.
    As tu essayé sur un autre ordi ?
    Ceci étant, je ne sus vraiment pas doué dans toutes ces questions d'administration. Je ne vais pas pouvoir t'aider plus.

    Mais si par hasard des pointures passent par là, ils ne te répondront pas, parce que tu as oublié 2 info qui me paraissent essentielles : Quelle version Windows tu as, et quelle version de Windev.
    Effectivement c'est exactement ça. Le bat passe en double cliquant dessus mais pas avec DDELance.

    J'utilise Windev 21 et mon pc est en Windows 7 64 Bits.

    Merci pour ton aide en tout cas, je vais essayer sur une autre machine.

Discussions similaires

  1. Exécuter un script PowerShell depuis PHP
    Par user007 dans le forum Langage
    Réponses: 7
    Dernier message: 07/04/2014, 16h05
  2. Reprendre contrôle Form pendant execution script Powershell
    Par Alienw12 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 21/02/2013, 17h13
  3. Réponses: 4
    Dernier message: 15/09/2010, 16h17
  4. Execution script PHP depuis script shell
    Par TangoZoulou dans le forum Langage
    Réponses: 5
    Dernier message: 18/02/2010, 16h32
  5. Réponses: 1
    Dernier message: 15/02/2009, 07h45

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