繁体   English   中英

在Python中将参数传递给subprocess.Popen

[英]Passing Arguments to subprocess.Popen in Python

我有以下代码。 它连接到“立即服务”实例。 获取特定服务器的事件。 该事件具有打印机创建的详细信息。 ip在记录['user_input']中,打印机名称在记录['u_string_full_utf8_1']中。 我想要实现的是将这些作为参数传递给powershell,以便它可以运行Printer Create脚本。 以下代码中传递的参数有效。 但是我不确定如何在中间传递参数。

import pysnow
import subprocess
import os

# Create client object
s = pysnow.Client(instance='instance', user='admin', password='password')

# Get all incidents
r = s.query('incident', query={'cmdb_ci':'a28cba7a4fb4030028f7fd218110c7f5'})

# order by 'created_on' descending, then iterate over the result and print out number
for record in r.get_multiple(order_by=['-created_on']):
    print(record['cmdb_ci'])

psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
                            "Invoke-Command -ComputerName SERVER01 -FilePath 'C:\Users\testuser\Documents\Scripts\PrinterCreate.ps1' -ArgumentList '10.2.3.2','PS Driver for Universal Print','TESTPRINTER' -Credential $cred"], cwd=os.getcwd())
result = psxmlgen.wait()

我检查了现有资源,但无法弄清楚如何在中间传递资源。

任何帮助,将不胜感激。

使用Python2.7

您可以参考两个类似的问题。 Popen使您可以访问交互式过程的stdin。 您可能要参考

从python内部运行交互式命令

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

两者都有帮助。 我不确定powershell是否将它们的stdin和stdout公开为Windows中的常规本机进程。

可以与以下内容一起使用:

psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
                            "Invoke-Command -ComputerName Server01 -FilePath 'C:\Users\smehta30\Documents\Scripts\PrinterCreate.ps1' -ArgumentList "+record['user_input']+",'PS Driver for Universal Print',"+record['u_string_full_utf8_1']+" -Credential $cred"], cwd=os.getcwd())

暂无
暂无

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

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