2017-03-01 7 views
1

PowerShellコマンドを実行してメモリ使用量を取得し、その結果を取得しようとしています。Python execute powershell command

import subprocess 
output = subprocess.call(["powershell.exe", "Get-Counter -Counter "+'"\memory\\available mbytes"'+" -MaxSamples 10 -SampleInterval 1"]) 
try: 
    subprocess.check_output("Get-Counter -Counter "+'"\memory\\available mbytes"'+" -MaxSamples 10 -SampleInterval 1", shell=TRUE) 
except subprocess.CalledProcessError, e: 
    print "subproces CalledProcessError.output = " + e.output 

print output 

コマンドを実行するための成功であるが、唯一の次のような結果を得る:私は戻ってPowerShellの結果を取得できますか

subproces CalledProcessError.output = 
0 

を?

+0

あなたのコマンドい( "メモリ\利用可能メガバイト\" 'は、Get-カウンター-Counterを-MaxSamples 10 -SampleInterval 1 ')は、インタラクティブで働きますパワーシェルセッション? –

答えて

1

あなたが実行する必要があります。中\と文字列の前にcheck_output"powershell.exe"rを供給

try: 
    output = subprocess.check_output(
       ["powershell.exe", "Get-Counter", 
       "-Counter "+r'"\memory\available mbytes"', 
       "-MaxSamples 10", "-SampleInterval 1"], 
       shell=True) 
except subprocess.CalledProcessError, e: 
    print "subproces CalledProcessError.output = " + e.output 
print output 

はお知らせTrueではなくTRUE

しかし、私は強くpsutilを使用することをお勧めします。 PowerShellの結果を取得して解析するのではなく、

In [4]: import psutil 

In [5]: psutil.virtual_memory() 
Out[5]: svmem(total=17087684608L, available=8599142400L, percent=49.7, used=8488542208L, free=8599142400L) 

In [6]: psutil.swap_memory() 
Out[6]: sswap(total=38059204608L, used=14400655360L, free=23658549248L, percent=37.8, sin=0, sout=0) 
0

同じ例Pythonの3以上が、用として:

try: 
    output = subprocess.check_output(
       ["powershell.exe", "Get-Counter", 
       "-Counter "+r'"\memory\available mbytes"', 
       "-MaxSamples 10", "-SampleInterval 1"], 
       shell=True) 
except subprocess.CalledProcessError as e: 
    print ("subproces CalledProcessError.output =", e.output) 
print (output.decode()) 
関連する問題