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

Langage Perl Discussion :

Executer un script powershell avec Perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Par défaut Executer un script powershell avec Perl
    Bonjour à tous ,

    Je dispose d'un script powershell que je souhaiterai utiliser dans mon script Perl . Ma question est: Comment faut-il faire pour executer un script powershell à partir du code perl si c'est possible ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Oui, c'est possible, mais la façon d'y arriver dépend de ce que tu veux obtenir comme résultat exactement.

    Si tu souhaite récupérer dans le programme Perl les données produites (à l'écran) par le script Powershell, par exemple pour les retraiter ensuite,, alors il faut utiliser les backquotes (ou accents graves), avec un truc dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @resultat = `script_powershell param`;
    L'opérateur qx permet de faire à peu près la même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @resultat = qx{script_powershell param};
    Là, j'ai utilisé un tableau pour la variable résultat, mais on peut aussi utiliser un scalaire, suivant le but recherché.

    Si tu veux juste l'exécuter et simplement récupérer le code de sortie (succès ou erreur, par exemple) du script, alors utilise la fonction <i>system</i>.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $code_retour = system("script_powershell param");
    Si tu veux juste le lancer sans t'intéresser au résultat et mettre fin tout de suite au programme Perl, alors il y a la fonction <i>exec</i>, utilisée comme system ci-dessus (mais sans la partie "my code_retour =", puisque le programme Perl se termine immédiatement).

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Par défaut
    Merci pour ta réponse .

    Citation Envoyé par Lolo78 Voir le message
    Si tu veux juste le lancer sans t'intéresser au résultat et mettre fin tout de suite au programme Perl, alors il y a la fonction <i>exec</i>, utilisée comme system ci-dessus (mais sans la partie "my code_retour =", puisque le programme Perl se termine immédiatement).
    Moi j'ai besoin juste de l'executer donc le exec me suffit amplement mais comment faut-il faire car j'ai fais

    exec("chemin fichier powershell"); et cela ne fonctionne pas alors que si j'utilise system cela ouvre mon fichier powershell dans bloc notes

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    DSL, mais je n'ai pas ici d'environnement me permettant de tester et je ne connais pas vraiment Powershell. Mais une commande system fait un fork (création d'un nouveau process), donc c'est assez logique que ça ouvre une nouvelle fenêtre. Avec exec, ça ne devrait pas arriver, puisque le script Powershell devrait remplacer le programme Perl dans la même fenêtre.

    Mais peux-tu montrer la commande exacte que tu emploies pour ton exec? Peut-être qu'on aura une idée à te suggérer.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Par défaut
    la commande que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec("C:\...\...\monFichier.ps1");
    et l'interpreteur me dit 'C:\...\...\monFichier' n'est pas reconnu en tant que commande interne ou externe , un programme executable ou un fichier de commandes.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2014
    Messages : 84
    Par défaut
    Citation Envoyé par Seb2913 Voir le message
    la commande que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec("C:\...\...\monFichier.ps1");
    et l'interpreteur me dit 'C:\...\...\monFichier' n'est pas reconnu en tant que commande interne ou externe , un programme executable ou un fichier de commandes.
    Il faudrait commencer par vérifier que les fichier 'ps1' soient associés à powershell, ce dont je doute.
    La possibilité trouvé avec mon ami google est de mettre le nom du programme qui doit interpréter ton fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("powershell C:\...\...\monFichier.ps1");
    j'ai trouvé cette possibilité (pas une solution car pas testé) ici :
    http://syskb.com/comment-executer-un...en-powershell/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Runtime] executer un script shell avec java
    Par d_hazem dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 17/03/2009, 10h02
  2. Executer un script TSL avec PERL
    Par Hoopsy dans le forum Langage
    Réponses: 8
    Dernier message: 09/11/2008, 20h50
  3. Cron: executer un script php avec framework
    Par thibaut06 dans le forum Administration système
    Réponses: 2
    Dernier message: 01/05/2008, 14h55
  4. Background d'un script php avec perl et unix (ou linux)
    Par fichiertempo dans le forum Web
    Réponses: 4
    Dernier message: 20/07/2006, 07h03
  5. Executer/Stopper des applications avec Perl
    Par linkowich dans le forum Langage
    Réponses: 9
    Dernier message: 10/09/2005, 16h48

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