Как запустить скрипт PowerShell из файла Python - PullRequest
0 голосов
/ 25 июня 2019

К сожалению, я не смог найти много информации по этому поводу, но я хочу запустить сценарий powerShell из файла python, который я написал. Я хочу, чтобы пользователь действительно видел, как выполняется сценарий powerShell, и пользователь может вводить входные данные, которые требуются сценарию powerShell для python. Я использую 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 является частью других операторов if / elif, которые запускают другие файлы python с помощью модуля subprocess, но по какой-то причине я не могу запустить этот файл powerShell. Любой совет приветствуется. Спасибо

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вы можете выполнить следующие действия для обеспечения ввода от пользователя в скрипт PS (powershell) из python:

1) Создать параметризованный скрипт powershell

2)Возьмите ввод в python и установите его в качестве параметра сценария PS.

3) запустите / выполните сценарий с заданными параметрами.

Вот пример для запускаскрипт powershell из python с параметром.Это код 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. вы не получите вывод из последней строки)

0 голосов
/ 26 июня 2019

Во-первых, вы должны знать, .py интерпретатор файла python.exe

Итак, легко понять, .ps1 интерпретатор файла powershell.exe, а не python.exe

Я просто копирую и вставляю из вашего, ваш код должен выглядеть следующим образом,

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

Подробнее о powershell.exe -?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...