Выполнять команды powershell с Lua

Добрый вечер,

У меня есть программа, с которой я работаю, которая имеет встроенный компилятор lua, позволяющий выполнять пользовательские письменные действия.

Поскольку сам инструмент очень ограничен, особенно если он используется для сложных реакций в сетях, я хочу использовать Powershell вместо lua.

К сожалению, не так много можно найти об этом (по крайней мере, я не сделал), и такие вещи, как os.execute() или же io.popen() используйте стандартную командную строку из windows.

Кто-нибудь знает библиотеку или другой способ использовать Powershell с lua.

Что я уже пробовал: я пытался написать сценарий командной строки с помощью редактора Powershell и запустить этот сценарий с помощью os.execute, но он открывает его как текстовый файл, было бы лучше написать команды непосредственно в lua, но если нет В противном случае, выполнение сценария Powershell напрямую также будет хорошо. (В самой Windows вы можете выполнить скрипт правой кнопкой мыши "щелкнуть / выполнить с помощью Powershell"

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()

Ваше описание проблемы звучит так, как будто вы используете такую ​​команду, как os.execute("powershellscript.ps1")и этот вызов вызывает cmd.exe с вашей строкой в ​​качестве предложенной командной строки. Обычно Windows откроет .PS1 файл для редактирования; это было преднамеренное решение для безопасности. Вместо этого попробуйте изменить os.execute() Команда для явного вызова PS: os.execute("powershell.exe -file powershellscript.ps1"), Если вам нужно передать параметры в ваш скрипт, заключите их в {}, См. https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/console/powershell.exe-command-line-help для получения дополнительной информации о запуске PowerShell из командной строки.

Другие вопросы по тегам