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 ではなく空白行が表示されるのかということです。