Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python脚本中运行PowerShell cmdlet_Python_Powershell_Powershell 2.0 - Fatal编程技术网

在Python脚本中运行PowerShell cmdlet

在Python脚本中运行PowerShell cmdlet,python,powershell,powershell-2.0,Python,Powershell,Powershell 2.0,我有一个Python脚本,我想运行PowerShell cmdlet。我在网上查找过,唯一能找到的就是运行PowerShell脚本,但我想在脚本中编写cmdlet,然后通过点源将其执行所需的时间远远超过需要的时间 我已尝试以以下方式使用subprocess.Popen: cmd = subprocess.Popen(['C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe', ps_cmdlet]) 但是ps_cmdlet是一个py

我有一个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之类的东西

谢谢

尝试以下操作(ps\u cmdlet是python字符串):

编辑:下面是一个将计算机的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()
上面的脚本将有助于从Python执行PS cmdlet。

这非常有效

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

我仍然得到一个“没有这样的文件或目录错误”。我只是在尝试:import subprocess cmdlet=“start service lanmanserver”subprocess.call(cmdlet)是否确实在subprocess.call中发生错误?回溯(最近一次调用):文件“test.py”,第4行,在中?subprocess.call(ps_cmdlet)文件“/usr/lib64/python2.4/subprocess.py”,第419行,在调用返回Popen(*args,**kwargs.wait()文件“/usr/lib64/python2.4/subprocess.py”,第550行,在init errread,errwrite)文件“/usr/lib64/python2.4/subprocess.py”,第996行,在(执行)子进程引发子进程异常OSError:[Errno 2]没有这样的文件或目录这不是cmdlet示例-ipconfig是位于磁盘上的可执行文件。它与powershell无关。请尝试将初始示例中的反斜杠加倍——“C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe”。\需要在Python字符串中转义。。。
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()
import subprocess
pl = subprocess.Popen(['powershell', 'get-process'], stdout=subprocess.PIPE).communicate()[0]
print(pl.decode('utf-8'))