0

powershell スクリプトを実行する以下の単純な python プログラムを考えてみましょう。コマンド ラインから python プログラムを起動すると正常に動作しますが、戻り値として 0 ではなく空白行が出力されるのは奇妙に感じます。ただし、この python プログラムを pydev から実行すると、subprocess.call(). Windows 7 の Eclipse SDK 4.2.1 で Pydev 2.7.0 を使用しています。Python のバージョンは 2.7.3 です。

import subprocess

def run_powershell_script(script):
    cmd = ['powershell',
         '-ExecutionPolicy',
         'RemoteSigned',
         '-File',
         script]
    returncode = subprocess.call(cmd) 
    print "Done"
    return returncode

if __name__ == "__main__":
    print run_powershell_script("testscript.ps1")

私がテストしている PowerShell スクリプトは非常に単純です。パスを出力してから 0 を返します。

Write-Host "$env:Path"
exit 0

subprocess.call()要約すると、2 つの質問があると思います。最も重要なのは、このプログラムを pydev で実行するとなぜハングするのかということです。もう 1 つの質問は、なぜ印刷するreturncodeと 0 ではなく空白行が表示されるのかということです。

4

1 に答える 1

1

私はここで 100% ではありませんがexit、スクリプトを強制終了するだけではありませんか? スクリプトを終了するときに値を返すには、return.. を使用します。代わりに、次の PS スクリプトを試してください。

Write-Host "$env:Path"
return 0
于 2013-01-17T21:16:01.620 に答える