Powershell datei (ps1) aus python starten
-
Gigal -
13. August 2021 um 10:39 -
Unerledigt
-
-
Powershell datei (ps1) aus python starten? Schau mal ob du hier fündig wirst!
-
Hallo,
gibt es Probleme mit deinem Befehl oder was möchtest du von uns wissen?
Was macht die Datei? Wie sieht der restliche Python-Code aus? Muss Python warten bis die *.ps1 Datei ausgeführt wurde oder soll das parallel laufen?
Ohne genauere Infos, mein Ansatz, ungetestet:
Python
Alles anzeigen#!/usr/bin/env python3 from subprocess import run from pathlib import Path PATH_TO_PS1 = Path('C:\test.ps1') def main(): run([PATH_TO_PS1], check=True) if __name__ == '__main__': main()
Grüße
Dennis
-
Das Script kann man nicht direkt als Datei starten, da es keine ausführbare Datei ist. Das Script muss vom Interpreter (PowerShell) ausgeführt werden.
Es gibt ein recht einfaches Modul: https://poshpy.readthedocs.io/en/latest/usage.html
poshpy.execute_command: https://github.com/BlueGhostLabs/…shpy/api.py#L17
poshpy.execute_file: https://github.com/BlueGhostLabs/…shpy/api.py#L50
Kleines Beispiel inklusive der Decodierung:
Codeimport poshpy proc = poshpy.execute_command("dir") stdout = proc.standard_out.decode() print(stdout)
Leider hat der Maintainer des Packages vergessen das Fenster zu verstecken.
Python
Alles anzeigenfrom subprocess import run, CREATE_NO_WINDOW def execute_command(command): cmd = ["powershell.exe", "-Command", command] cflags = CREATE_NO_WINDOW proc = run(cmd, capture_output=True, creationflags=cflags, encoding="utf8") return proc completed = execute_command("dir C:\\Users") if completed.returncode == 0: print("Befehl ohne Fehler ausgeführt") print() print("STDOUT:") print(completed.stdout) print() print("STDERR:") print(completed.stderr) else: print(f"Befehl mit Fehler {completed.returncode} abgebrochen") print() print("STDOUT:") print(completed.stdout) print() print("STDERR:") print(completed.stderr)
Wie du dann selbst execute_file implementieren kannst, sollte jetzt klar sein.
Das einzige, was wahrscheinlich große Probleme verursachen wird, sind Fehler in der Zeichencodierung bzw. eine andere Codierung als utf8.
Die PowerShell ist etwas komisch, was die Codecs betrifft.
Sollte es weitere Anforderungen geben, wirst du wahrscheinlich hier was finden: https://pypi.org/project/pypsrp/
Wahrscheinlich wird man die Remoteshell erst freigeben müssen (Gruppenrichtlinien?), damit man diese auch lokal nutzen kann.
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!