【问题标题】:Using powershell as Admin in python在 python 中使用 powershell 作为管理员
【发布时间】:2018-11-25 22:50:51
【问题描述】:

所以我有一个正在处理的项目,我需要做的一件事是在后台以管理员身份在 PowerShell 中运行“netstat -nb”命令,并将结果接收到 python 程序。 我一直在网上搜索解决方案,但从未找到有效的解决方案。我很乐意提供帮助。

"netstat -nb"

【问题讨论】:

    标签: python python-3.x shell powershell subprocess


    【解决方案1】:

    如果您想执行 netstat 命令,您可以直接从 Python 执行此操作。但您需要以管理员身份运行 Python 脚本:

    import subprocess 
    subprocess.call("netstat -nb")
    

    如果您需要访问 Python 脚本中的 powershell netstat 值,那么您可以在 powershell 中设置变量并将其传递给 Python 脚本。 以下是powershell命令:

    $con=netstat -nb
    & python.exe "FullPath of Python script file"-p $con
    

    Python 脚本:

    import sys
    print(sys.argv[5])
    
    for conn in sys.argv:
       print(conn)
    

    在这里,我们循环传递的参数(netstat 输出)并显示。因此,您将 powershell 命令结果传递给 Python 脚本并在那里显示。 将显示以下列:

    【讨论】:

    • 我通过cmd运行.py程序
    【解决方案2】:

    您可以使用子进程库。关于子流程模块,您可以查看this 文档以获取更多详细信息和功能。它可以帮助您解决问题。您可以使用 subprocess.Popen 或 subprocess.call 或从另一个脚本获取输出,您可以使用 subprocess.check_output。

    你可以像这段代码一样使用它:

    import subprocess
    import sys
    output = subprocess.Popen(['python','sample.py','Hello'],stdout=subprocess.PIPE).communicate()
    print(output)
    

    sample.py 脚本里面是:

    import sys
    my_message = "This is desired output. " + sys.argv[1]
    print(my_message)
    

    在您的情况下,您可以将 Popen 用作:

    subprocess.Popen(['netstat','-nb'],stdout=subprocess.PIPE).communicate()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 2021-01-16
      相关资源
      最近更新 更多