Führen Sie die PowerShell-Funktion über ein Python-Skript aus

Ich muss eine PowerShell-Funktion über ein Python-Skript ausführen. Sowohl die .ps1- als auch die .py-Datei befinden sich derzeit im selben Verzeichnis. Die Funktionen, die ich aufrufen möchte, befinden sich im PowerShell-Skript. Die meisten Antworten, die ich gesehen habe, beziehen sich auf das Ausführen ganzer PowerShell-Skripts in Python. In diesem Fall versuche ich, eine einzelne Funktion in einem PowerShell-Skript über ein Python-Skript auszuführen.

Hier ist das PowerShell-Beispielskript:

# sample PowerShell
Function hello
{
    Write-Host "Hi from the hello function : )"
}

Function bye
{
    Write-Host "Goodbye"
}

Write-Host "PowerShell sample says hello."

und das Python-Skript:

import argparse
import subprocess as sp

parser = argparse.ArgumentParser(description='Sample call to PowerShell function from Python')
parser.add_argument('--functionToCall', metavar='-f', default='hello', help='Specify function to run')

args = parser.parse_args()

psResult = sp.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'-ExecutionPolicy',
'Unrestricted',
'. ./samplePowerShell',
args.functionToCall],
stdout = sp.PIPE,
stderr = sp.PIPE)

output, error = psResult.communicate()
rc = psResult.returncode

print "Return code given to Python script is: " + str(rc)
print "\n\nstdout:\n\n" + str(output)
print "\n\nstderr: " + str(error)

Also möchte ich irgendwie die Funktion 'hello ()' oder 'bye ()' ausführen, die im PowerShell-Beispiel enthalten ist. Es wäre auch schön zu wissen, wie Parameter an die Funktion übergeben werden. Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage