Выполнять команды 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 из командной строки.