在python脚本中运行powershell脚本,如何使python在运行时打印powershell输出

用户名

我正在编写一个python脚本,该脚本可以检查各种条件并相应地运行powershell脚本,以帮助我自动完成从Windows XP到Windows 7的迁移。powershell脚本提供了自己的输出,可让用户了解发生的情况。我想获取powershell脚本的输出并将其打印为python脚本的输出。我环顾了一些问题,这些问题似乎想做同样的事情,但似乎对我没有帮助。最初我尝试使用

import subprocess
subprocess.call(["C:\Users\gu2124\Desktop\helloworld.ps1"])

如此处的建议,从Python脚本运行PowerShell功能,但是我发现这等待程序首先执行并且不提供输出,因此我发现我需要subprocess.Popen()按照此处的建议使用Popen在Python中执行Powershell脚本,如何获取Powershell脚本的输出并将其更新到网页?所以我尝试了

import subprocess
subprocess.Popen(["C:\Users\gu2124\Desktop\helloworld.ps1"], stdout=sys.stdout)

我得到这个错误

Traceback (most recent call last):
  File "C:\Users\gu2124\Desktop\pstest.py", line 5, in <module>
    subprocess.Popen(["C:\Users\gu2124\Desktop\helloworld.py1"], stdout=sys.stdout)
  File "C:\Python27\lib\subprocess.py", line 701, in __init__
    errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr)
  File "C:\Python27\lib\subprocess.py", line 848, in _get_handles
    c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
  File "<string>", line 523, in __getattr__
  File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 150, in __getattr__
    return syncreq(self, consts.HANDLE_GETATTR, name)
  File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 71, in syncreq
    return conn.sync_request(handler, oid, *args)
  File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 434, in sync_request
    raise obj

AttributeError: DebugOutput instance has no attribute 'fileno'

我不完全确定这是什么意思,但是从阅读此AttributeError之后的理解来看,我认为我理解:StringIO实例没有属性'fileno'是因为我不正确地使用了stdout。我环顾了四周,发现了为什么我的python子进程代码无法正常工作?答案在哪里使用,stdout=subprocess.PIPE所以我尝试了这个

import subprocess
subprocess.Popen(["C:\Users\gu2124\Desktop\helloworld.ps1"], stdout=subprocess.PIPE)

这也没有给我输出最后我看到了这个http://www.pythonforbeginners.com/os/subprocess-for-system-administrators并将我的代码更改为

import subprocess
p = subprocess.Popen(["powershell","C:\Users\gu2124\Desktop\helloworld.ps1"], stdout=subprocess.PIPE)
print p.communicate

我认为这可能是因为我最初试图从命令行运行Powershell脚本,所以我必须先打开Powershell。当我直接在命令行中输入这些命令时,它会按照应有的方式工作,但是当我通过python脚本运行它时,它会给出

<bound method Popen.communicate of <subprocess.Popen object at 0x00000000026E4A90>>

我想这是一种改进,但并不是我期望的“ Hello world”。我不知道下一步该怎么做才能使它正常工作。任何帮助将不胜感激

另外,如果需要我正在使用的powershell脚本,那就是

$strString = "Hello World"
write-host $strString

function ftest{
$test = "Test"
write-host $test
}

编辑:我试图升级到python 3.3就像在第一个答案中建议的那样,但是我仍然无法使其工作。我使用了命令,p = subprocess.Popen(['powershell.exe', "C:\\Users\\gu2124\\Desktop\\helloworld.ps1"], stdout=sys.stdout)并确定文件在那里,但是出现了这个错误:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    p = subprocess.Popen(['powershell.exe', "C:\\Users\\gu2124\\Desktop\\helloworld.ps1"], stdout=sys.stdout)
  File "C:\Python27\lib\subprocess.py", line 701, in __init__
    errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr)
  File "C:\Python27\lib\subprocess.py", line 848, in _get_handles
    c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
UnsupportedOperation: fileno 
核P
  1. 确保您可以运行Powershell脚本(默认情况下处于禁用状态)。您可能已经做到了。http://technet.microsoft.com/zh-CN/library/ee176949.aspx

    Set-ExecutionPolicy RemoteSigned
    
  2. 在您的powershell脚本上运行以下python脚本helloworld.py

    # -*- coding: iso-8859-1 -*-
    import subprocess, sys
    
    p = subprocess.Popen(["powershell.exe", 
                  "C:\\Users\\USER\\Desktop\\helloworld.ps1"], 
                  stdout=sys.stdout)
    p.communicate()
    

该代码基于python3.4(或任何3.x系列解释器),尽管它也应在python2.x系列上工作。

C:\Users\MacEwin\Desktop>python helloworld.py
Hello World

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串替换在运行时在Powershell脚本中不起作用

来自分类Dev

在Powershell脚本中运行python脚本

来自分类Dev

从Visual Studio运行时,PowerShell脚本结果不同

来自分类Dev

当python脚本已经在运行时,从Java调用python函数

来自分类Dev

Bash脚本在doubleclick与在终端中运行时的输出不同

来自分类Dev

通过freeSSHd运行时Powershell脚本未退出

来自分类Dev

当另一个python脚本正在运行时,如何停止我的python脚本?

来自分类Dev

从Python运行Powershell脚本,而无需在每次运行时重新导入模块

来自分类Dev

如何在运行时仅从bash脚本中打印某些命令?

来自分类Dev

如何从CSV文件输出中删除NONREF,以便在脚本运行时不打印出行?

来自分类Dev

在python脚本中运行powershell脚本

来自分类Dev

在运行时编辑shell脚本和python脚本

来自分类Dev

通过批处理文件运行时,如何将python脚本的输出打印到Windows控制台?

来自分类Dev

通过cygwin从Shell脚本运行时,如何将参数传递给Powershell脚本?

来自分类Dev

如何在运行时仅从bash脚本中打印某些命令?

来自分类Dev

直接在PowerShell中运行Python脚本

来自分类Dev

进程仍在运行时如何退出Powershell?

来自分类Dev

在python脚本中运行powershell脚本,如何使python在运行时打印powershell输出

来自分类Dev

在运行时如何在Expect Shell脚本中传递参数

来自分类Dev

如何在运行时更改R脚本中的列名?

来自分类Dev

脚本运行时如何更改bash脚本输出?

来自分类Dev

在运行时替换Shell脚本

来自分类Dev

在运行时确定脚本中的shell

来自分类Dev

如何在运行时使用PHP打印Python输出

来自分类Dev

如何使用Java运行时打印Python脚本的std输出?

来自分类Dev

在运行时与 nodejs 应用程序内的 python 脚本交互

来自分类Dev

如何在运行时在 webpack 应用程序中要求任意本地脚本?

来自分类Dev

Invoke-AzureRmVMRunCommand 命令在 powershell 脚本中运行时显示错误的输出

来自分类Dev

如何使用 Python 中的参数运行 PowerShell 脚本

Related 相关文章

  1. 1

    字符串替换在运行时在Powershell脚本中不起作用

  2. 2

    在Powershell脚本中运行python脚本

  3. 3

    从Visual Studio运行时,PowerShell脚本结果不同

  4. 4

    当python脚本已经在运行时,从Java调用python函数

  5. 5

    Bash脚本在doubleclick与在终端中运行时的输出不同

  6. 6

    通过freeSSHd运行时Powershell脚本未退出

  7. 7

    当另一个python脚本正在运行时,如何停止我的python脚本?

  8. 8

    从Python运行Powershell脚本,而无需在每次运行时重新导入模块

  9. 9

    如何在运行时仅从bash脚本中打印某些命令?

  10. 10

    如何从CSV文件输出中删除NONREF,以便在脚本运行时不打印出行?

  11. 11

    在python脚本中运行powershell脚本

  12. 12

    在运行时编辑shell脚本和python脚本

  13. 13

    通过批处理文件运行时,如何将python脚本的输出打印到Windows控制台?

  14. 14

    通过cygwin从Shell脚本运行时,如何将参数传递给Powershell脚本?

  15. 15

    如何在运行时仅从bash脚本中打印某些命令?

  16. 16

    直接在PowerShell中运行Python脚本

  17. 17

    进程仍在运行时如何退出Powershell?

  18. 18

    在python脚本中运行powershell脚本,如何使python在运行时打印powershell输出

  19. 19

    在运行时如何在Expect Shell脚本中传递参数

  20. 20

    如何在运行时更改R脚本中的列名?

  21. 21

    脚本运行时如何更改bash脚本输出?

  22. 22

    在运行时替换Shell脚本

  23. 23

    在运行时确定脚本中的shell

  24. 24

    如何在运行时使用PHP打印Python输出

  25. 25

    如何使用Java运行时打印Python脚本的std输出?

  26. 26

    在运行时与 nodejs 应用程序内的 python 脚本交互

  27. 27

    如何在运行时在 webpack 应用程序中要求任意本地脚本?

  28. 28

    Invoke-AzureRmVMRunCommand 命令在 powershell 脚本中运行时显示错误的输出

  29. 29

    如何使用 Python 中的参数运行 PowerShell 脚本

热门标签

归档