繁体   English   中英

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

[英]How do I run a PowerShell script with parameters from Python

我正在尝试运行具有 Python 3.7.3 参数的 PowerShell 脚本,但不知道如何在 Popen 中正确调用该函数

我试图用我的 PowerShell 脚本做的是登录到 Cisco 路由器并根据定义的路由器数量在 x 个路由器上运行 Cisco IOS 命令。 因此,我设置 PowerShell 脚本的方式是,当我使用 PowerShell 时,我传入路由器的 IP 地址,例如.\\test.ps1 177.241.87.103powershell.\\test.ps1 177.241.87.103当我使用命令时迅速的。 这两个命令都可以工作并获得正确的输出并将它们的输出保存到文本文件中。

但现在我想让 Python 使用参数运行这个“test.ps1”脚本。 我已将“test.ps1”保存到“C:\\Users\\jgreen02”和“C:\\Users\\jgreen02\\Desktop”

import subprocess

subprocess.call("powershell .\\test.ps1 177.241.87.103")

我确定我错误地使用了调用函数,或者我尝试运行的文件可能需要放在我的 Python 脚本所在的文件夹中。

错误输出是:

Traceback (most recent call last):
  File "C:/Users/jgreen02/PycharmProjects/PortChecker/Platypus.py", line 43, in <module>
    subprocess.call(["powershell test.ps1 10.238.241.38"])
  File "C:\Users\jgreen02\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 323, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Users\jgreen02\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "C:\Users\jgreen02\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified```

该方法有两个错误:

代码00.py

#!/usr/bin/env python3

import sys
import subprocess


def main():
    cmd = ["PowerShell", "-ExecutionPolicy", "Unrestricted", "-File", ".\\script00.ps1"]  # Specify relative or absolute path to the script
    ec = subprocess.call(cmd)
    print("Powershell returned: {0:d}".format(ec))


if __name__ == "__main__":
    print("Python {0:s} {1:d}bit on {2:s}\n".format(" ".join(item.strip() for item in sys.version.split("\n")), 64 if sys.maxsize > 0x100000000 else 32, sys.platform))
    main()
    print("\nDone.")

脚本00.ps1

$PSVersionTable

输出

 cfati@CFATI-5510-0:e:\\Work\\Dev\\StackOverflow\\q057115405]> "e:\\Work\\Dev\\VEnvs\\py_064_03.07.03_test0\\Scripts\\python.exe" code00.py Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] 64bit on win32 Name Value ---- ----- PSVersion 5.1.18362.145 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.18362.145 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 Powershell returned: 0 Done.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM