在Python脚本中运行PowerShell cmdlet

时间:2014-06-16 15:01:20

标签: python powershell powershell-v2.0

我有一个Python脚本,我想运行PowerShell cmdlet。我已经在线查看了,我唯一能找到的就是运行PowerShell脚本,但我觉得要将cmdlet编写到脚本中,然后点源它来执行会花费比所需更长的时间。

我尝试过以下方式使用subprocess.Popen:

cmd = subprocess.Popen(['C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe', ps_cmdlet])

但ps_cmdlet是一个python字符串变量,其powershell cmdlet为其值。所以,我显然得到一个“没有这样的文件或目录”错误。有没有办法在python脚本中运行powershell cmdlet而不使用像IronPython这样的东西?

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试以下操作(ps_cmdlet是一个python字符串):

subprocess.call(ps_cmdlet)

编辑:这是一个将机器的ip配置输出到Powershell的示例:

ps_cmdlet = 'ipconfig'
subprocess.call(ps_cmdlet)

另一个编辑:对我有用的另一种方式是:

ps_cmdlet = 'whatever command you would enter in powershell'
p = subprocess.Popen(ps_cmdlet,stdout=subprocess.PIPE)
p.communicate()

答案 1 :(得分:0)

这很好用

import subprocess
pl = subprocess.Popen(['powershell', 'get-process'], stdout=subprocess.PIPE).communicate()[0]
print(pl.decode('utf-8'))

答案 2 :(得分:-1)

import subprocess
process = subprocess.Popen([r"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", "get-process"],
                           shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process_output = process.read().splitlines()

以上脚本将有助于从Python执行PS Cmdlet。