OVH Cloud OVH Cloud

Utiliser VBscript avec PeJBshell

1 réponse
Avatar
Méta-MCI
Bonsoir !

Quoi ?
On va créer une (toute) petite fonction en VB-Script. Cette fonction va
devenir utilisable dans la session courante de PeJBshell

Cheminement :
.pyt
pxd.pxclass("vbs=ax('vbscript')")
source="Function mul(x,y) mul=x*y end Function"
pxd.vbs___addfunc(source,"mul")
pxd.recordpfunclass("mul", "vbs")

print pxd.vbs___mul(111,4)

a=1.23
b=4.56
print pxd.vbs___mul(a,b)

print pxd.vbs___mul(10, min(4,6))


Explications :
- le première ligne passe en pmode PYT (python)
- dans la seconde ligne, on demande à charger VB-Script (d'autres langages
sont possibles : Perl, Jscript, PHP)
- la troisième ligne contient le code-source de la fonction VB-Script (très
simple dans l'exemple ; c'est juste pour montrer comment on fait)
- dans la quatrième ligne, on "compile" la fonction (si vous préférez, on
la définit)
- la cinquième ligne ordonne à PeJBshell de l'inclure dans son espace de
nom

- les lignes suivantes montrent des exemples d'utilisation

Vous aurez noté les possibilités d'échanges de paramètres, avec le système
courant, y compris en mélangeant des fonctions Python et VB-Script. On peut
d'ailleurs allègrement inter-appeler des fonctions Python, VB-Script, Ruby,
PHP, etc.
Mais, en pratique, on connaît rarement tous ces langages. Par contre,
l'intérêt est plus grand, lorsqu'on récupère des scripts tout prêts.
Je rappelle aussi que les commande "DOS" et les résultats de ces commandes
sont mémorisés automatiquement dans des variables, et utilisables dans des
fonctions quelconques.
De la même manière, une fonction VB-Script peut lancer l'exécution d'une
commande "DOS".


Bonne soirée

Michel Claveau

1 réponse

Avatar
Méta-MCI
Re !


Pour enfoncer le clou :

On peut compléter l'exemple précédent, avec ces deux lignes :
mmul=pxd.vbs___mul
print mmul(22,3)

Et, là, on voit l'intégration complète, car mmul() reste une fonction écrite
en VB-Script, et utilisable dans le shell.



@+

Michel Claveau



PS : j'espère que les fans de PowerShell ne liront ces messages que demain
matin, car je ne voudrais pas avoir été à l'origine de leur mauvaise nuit...