Python执行powershell命令
问题描述:
我尝试执行PowerShell命令来获取内存使用情况并获得结果。Python执行powershell命令
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
这是成功执行命令,但只得到以下结果:
subproces CalledProcessError.output =
0
我怎样才能获得PowerShell的结果回来?
答
你需要做的:
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
供应"powershell.exe"
到check_output
和前r
串与\
在
但我会强烈建议使用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)
答
上面同样的例子,但为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())
请问您的命令('找柜台-Counter “\内存\可用兆字节” -MaxSamples 10 -SampleInterval 1')在交互式工作PowerShell会话? –