2016-12-08 1 views
0

Bonsoir,exécuter des commandes PowerShell avec Lua

J'ai un programme que je travaille, qui a un compilateur Lua à bord pour permettre des actions écrites sur mesure.

Étant donné que l'outil lui-même est très limité, surtout s'il s'agit de réactions complexes sur des réseaux, je veux utiliser Powershell over lua. Malheureusement, il n'y a pas grand chose à trouver à ce sujet (du moins je ne l'ai pas fait), et des choses comme os.execute() ou io.popen() utilisent la ligne de commande standard de Windows.

Est-ce que quelqu'un connaît une bibliothèque ou une autre façon d'utiliser Powershell avec lua.

Ce que j'ai déjà essayé: J'ai essayé d'écrire un script de ligne de commande avec l'éditeur Powershell et exécuter ce script avec os.execute, mais il ouvre comme un fichier texte, il serait préférable d'écrire directement les commandes en lua mais s'il n'y a pas d'autre moyen, exécuter un script Powershell directement serait également bien. (Sous Windows lui-même, vous pouvez exécuter le script avec le bouton droit de la souris "click/Execute with Powershell"

+0

'os.execute [[fichier-powershell" c: \ chemin \ vers \ votre \ fichier.ps1 "arg1 arg2]]', les arguments de script sont optionnels –

Répondre

2
-- You can generate PowerShell script at run-time 
local script = [[ 
Write-Host "Hello, World!" 
]] 
-- Now create powershell process and feed your script to its stdin 
local pipe = io.popen("powershell -command -", "w") 
pipe:write(script) 
pipe:close() 
+0

Fonctionne bien sans modifier la politique d'exécution – Etaila

+0

Un très bon tour pour les petits scripts; Je détesterais essayer de construire et d'exécuter un grand script de cette façon, cependant. –

1

Votre description du problème donne l'impression que vous utilisez une commande telle que os.execute("powershellscript.ps1"), et cet appel appelle cmd.exe avec votre chaîne En règle générale, Windows ouvrira un fichier .PS1 pour l'édition, ce qui est une décision délibérée pour la sécurité.Au lieu de cela, essayez de modifier la commande os.execute() pour appeler explicitement PS: os.execute("powershell.exe -file powershellscript.ps1") Si vous devez passer des paramètres à votre script, joindre Pour plus d'informations sur l'invocation de PowerShell à partir de la ligne de commande, reportez-vous à la section

+0

Bien mais un problème, j'obtiens la réponse qui exécute un script sur les fenêtres sont désactivées. Maintenant, je peux probablement changer cela mais puisque l'outil, c'est-à-dire le script Iua, fonctionnera sur plusieurs PC en même temps, puis-je inclure une allocation dans le script ou puis-je contourner l'allocation? – Etaila

+1

Le lien MSDN contient les informations supplémentaires dont vous avez besoin pour résoudre le problème secondaire (impossible d'exécuter des scripts). Ce que vous cherchez est la "politique d'exécution"; par défaut, l'exécution des scripts est désactivée dans Powershell (encore une fois, pour des raisons de sécurité). Ce que vous voulez faire est remplacer la politique d'exécution par défaut lorsque vous invoquez le script - et cela peut également être fait avec un commutateur de ligne de commande. Lisez le contenu sur le lien MSDN. –