繁体   English   中英

如何从python文件运行powerShell脚本

[英]How to run a powerShell script from a python file

不幸的是,我找不到很多信息,但是我希望从我编写的python文件中运行powerShell脚本。 我希望用户实际看到powerShell脚本正在运行,并且用户可以从python输入powerShell脚本所需的输入。 我正在使用pyCharm作为IDE。

当我运行脚本来调用此powerShell脚本时,它给了我这个错误:

File "C:\TestAutomation\eFuse\eFuse.ps1", line 19
SyntaxError: Non-ASCII character '\xc2' in file C:\Test\eK\eK.ps1 on line 19, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

这是代码的相关部分:

        elif switch_result == "eTool":
            subprocess.call(['python', 'C:\\TestAutomation\\eFuse\\eFuse.ps1'], stdout=sys.stdout)

此elif语句是其他使用subproccess模块​​运行其他python文件的if / elif语句的一部分,但是由于某些原因,我无法运行此powerShell文件。 任何建议表示赞赏。 谢谢

首先,您应该已经知道.py文件的解释器是python.exe

因此,很容易理解.ps1文件的解释器是powershell.exe ,而不是python.exe

我只是复制并粘贴您的代码,您的代码应如下所示,

subprocess.call('powershell.exe -File "C:\\TestAutomation\\eFuse\\eFuse.ps1"', stdout=sys.stdout)

有关powershell.exe -?详细信息powershell.exe -?

您可以执行以下操作,以从python提供用户到PS(powershell)脚本的输入:

1)创建参数化的Powershell脚本

2)在python中获取输入并将其设置为PS脚本参数。

3)使用给定的参数运行/执行脚本。

这是使用param从python运行powershell脚本的示例。 它是python代码:

*希望您具有带有参数的PS脚本。

import subprocess

params = ['param1', 'param2']  # POWERSHELL SCRIPT PARAMETERS ( optional )
script_path = "C:\\PowershellScripts\\test.PS1"  # POWERSHELL SCRIPT PATH
commandline_options = ["Powershell.exe", '-ExecutionPolicy', 'Unrestricted', script_path]  # INITIALIZING COMMAND
for param in params:  # FOREACH LOOP OF PARAMETERS
    commandline_options.append(param)  # ADDING SCRIPT PARAMETERS TO THE COMMAND

result = subprocess.run(commandline_options, stdout = subprocess.PIPE, stderr = subprocess.PIPE, universal_newlines = True)  # RUN THE SCRIPT USING SUBPROCESS WITH PARAMS

print(result.returncode)  # PRINT THE RETURN CODE FROM POWERSHELL SCRIPT
print(result.stdout)  # PRINT THE STANDARD OUTPUT FROM POWERSHELL SCRIPT
print(result.stderr)  # PRINT THE STANDARD ERROR FROM POWERSHELL SCRIPT

您可以看到python的输出(如果存在)(如果powershell脚本中没有错误。您将不会从最后一行获得任何输出)

暂无
暂无

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

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