2016-12-08 6 views
0

こんばんはとは私がカスタム書かれたアクションを可能にするオンボードLuaのコンパイラを持っている私はで動作プログラムを、持っている、Luaの

をPowerShellのコマンドを実行します。

ツール自体は非常に限られているので、特にネットワーク経由で複雑な反応が起こっている場合は、Powershellを使ってluaを使いたいと思っています。

悲しいことに、悲しいことに、少なくとも私はそうではないことが分かりました。os.execute()またはio.popen()のようなものは、Windowsの標準コマンドラインを使用します。

誰かがライブラリやPowershellを使用する別の方法をluaで知っていますか?

は、私はすでに試した: 私はPowerShellのエディタでコマンドラインスクリプトを記述し、os.executeでこのスクリプトを実行しようとしたが、それはテキストファイルとしてそれを開き、直接コマンドを書く方が良いでしょう他の方法がない場合は、Powershellスクリプトを直接実行することもできます。 (Windows自体では、マウスを右クリックしてスクリプトを実行することができます。

+0

'os.execute [[powershell-file" c:\ path \ to \ your \ file.ps1 "arg1 arg2]]'、スクリプト引数はオプションです –

答えて

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

実行ポリシーを変更せずにうまく動作します – Etaila

+0

小さなスクリプトでは非常に便利です。私はこの方法で大きなスクリプトをビルドして実行しようとするのは嫌です。 –

1

os.execute("powershellscript.ps1")などのコマンドを使用しているように問題の説明が表示され、その呼び出しによって文字列にcmd.exeが呼び出されます通常、Windowsは.PS1ファイルを編集用に開きます。これは安全のための意図的な決定でしたが、代わりにを明示的に呼び出すようにos.execute()コマンドを変更してみてください。それらは{}です。コマンドラインからPowerShellを呼び出す方法の詳細については、https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/console/powershell.exe-command-line-helpを参照してください。

+0

問題はありますが、ウィンドウが無効になります。私はおそらくそれを変えることができますが、そのルアスクリプトを搭載しているツールが同時に多くのPCで動作するため、スクリプト内に余裕を入れることができますか、何とか手当を回避できますか? – Etaila

+1

MSDNリンクには、二次的な問題を解決するために必要な追加情報があります(スクリプトを実行できません)。あなたが探しているのは "実行ポリシー"です。デフォルトでは、Powershellではスクリプトの実行が無効になっています(安全のために)。スクリプトの呼び出し時にデフォルトの実行ポリシーを上書きすることができます。コマンドラインスイッチで実行することもできます。資料をMSDNのリンクで読んでください。 –

関連する問題