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
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
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:
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 = `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é.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 my @resultat = qx{script_powershell param};
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>.
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 my $code_retour = system("script_powershell param");
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
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.
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
la commande que j'utilise :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 exec("C:\...\...\monFichier.ps1");
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 :
j'ai trouvé cette possibilité (pas une solution car pas testé) ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec("powershell C:\...\...\monFichier.ps1");
http://syskb.com/comment-executer-un...en-powershell/
Partager