2017-11-07 18 views
0

私は標準出力で動作し、それを印刷しようとしたpythonでPowerShellのと協力し、GET-diskコマンド で動作するようにしようとしているが、それの価値が、私が使用した直後になくなっていますここではコミュニケーション()関数 は私のコードです:にサブプロセスの出力を挿入する方法変数

proc = subprocess.Popen(r"C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe", stdin = subprocess.PIPE, 
        stdout = subprocess.PIPE) 
stdout, stderr = proc.communicate('get-disk') 
print stdout 

任意の提案ですか?

+0

あなたが自分自身でPowerShell' 'ですべてを行うことができるときなぜあなたは2つのスクリプト言語を使用していますか? 'PS C:\> Get-Disk'バム。完了しました。 – TheIncorrigible1

+0

あなたはパラメータなしでpowershellプロセスを実行しています。私は、デフォルトで入力パラメータをstdinから読み込むプロセスは認識していません...あなたはそれをGoogleでしたか?これはどうですか? https://stackoverflow.com/questions/2768790/stdin-to-powershell-script – Harry

答えて

0

あなたは私の代わりにproc.stdout.read()をお勧め

from subprocess import Popen 
from subprocess import Popen, CREATE_NEW_CONSOLE,PIPE,STDOUT 
import subprocess 
command="powershell.exe get-disk" 

#This will open the command in a new console 
proc=Popen(command,creationflags=CREATE_NEW_CONSOLE,stdout=subprocess.PIPE) 
read_stdout=[] 
for lines in proc.stdout.readlines(): 
    read_stdout.append(lines) 

print read_stdout 
0

あなたがこれを行うことができますを使用してプロセスを開始するとき、あなたのプロセス のSTDの出力を読み込みます以下のことを、試みることができますproc.communicate()

import subprocess 

cmd = r"C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe get-disk" 
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) 
print(proc.stdout.read()) 
proc.stdout.close() 
0

の下に行われているよう

proc=Popen('Some process',stdout=subprocess.PIPE) 

stdout = proc.stdout.read() 
関連する問題