Uruchamianie skryptu power shell

0

Mam do uruchomienia skrypt power shella
z poziomu pythona metodą subprocess
Wyskakuje mi taki błąd:

Error: [NodeId: ReadOp@sourceProduct] Specified 'file' [.0] does not exist.

Implementacja:

def run_process(command):
    """Running process
    ==========
    .
    ==========

    Function to run process. Platform independent.\n
    **Argument**:
    --------
    - *command* - (require) command to run in shell."""
    if platform.system() == "Linux":
        subprocess.call(command, shell=True)
    elif platform.system() == "Windows":
        script_name = "script.ps"
        script = open(script_name,"w+")
        script.write(command)
        script.close()
        process_list = command.split('\n')
        for x in range(len(process_list)):
            subprocess.call(str("PowerShell.exe" + " " + str(process_list[x])),stdout=sys.stdout)
    else:
        print("Unsupported platform.")

Czy w ten sposób powinienem uruchamiać skrypty power shella?

Po wygenerowaniu skryptu i zrobieniu copy paste do konsoli power shella wszystko działa

0

Po co zapisujesz skrypt do pliku. Potem z nim nic nie robisz. A jak wywołujesz tą funkcję. Pokaż przykłda testowy.

0

Testowo sprawdziłem czy uruchamianie pliku coś daje - niestety zaczęły wyskakiwać okienka które po chwili się zamykały i tak kolejne do momentu zakończenia.

Poprawiony skrypt:

def run_process(command):
    """Running process
    ==========
    .
    ==========

    Function to run process. Platform independent.\n
    **Argument**:
    --------
    - *command* - (require) command to run in shell."""
    if platform.system() == "Linux":
        subprocess.call(command, shell=True)
    elif platform.system() == "Windows":
        subprocess.call(str("PowerShell.exe" + " " + command),stdout=sys.stdout)
    else:
        print("Unsupported platform.")
0

U mnie coś takiego działa i daje poprwaną zwrotkę:


import platform
import subprocess
import sys


def run_process(command):
    """Running process
    ==========
    .
    ==========

    Function to run process. Platform independent.\n
    **Argument**:
    --------
    - *command* - (require) command to run in shell."""
    if platform.system() == "Linux":
        subprocess.call(command, shell=True)
    elif platform.system() == "Windows":
        subprocess.call(str("PowerShell.exe" + " " + command),stdout=sys.stdout)
    else:
        print("Unsupported platform.")


run_process("Get-Host | Select-Object Version")
0

Błąd jest na tyle dziwny że część skryptów działa a część trzeba przekleić do power shella

Masz jakiś pomysł czym może to być spowodowane?

0

Pokaż jakiś, który nie działa.

0

Do tych skryptów trzeba postawić dość duże środowisko a to nie jest proste

Myślałem że skypty mające wiele linijek, próbowałem z kodowaniem znaków (podobno power shell musi mieć unicode), znaki końca linii (\n) itd

0

Dodałem:

        script = command.split('\n')
        for x in range(len(script)):
            subprocess.call(script[x], shell=True)

Zadziałało

Uruchamiam przez cmd a nie power shella
Dlaczego nie zrobiłem tego od razu tak? Skrypty były za długie i dlatego użyłem power shella

1 użytkowników online, w tym zalogowanych: 0, gości: 1