Zastanawiam się, czy możliwe jest uruchomienie lokalnego skryptu PowerShell na zdalnym serwerze, do którego jestem ssh. Ten korzystnie musi być wykonany przez skrypt, taki jak Paramiko, gdzie mogę po prostu uruchomić skrypt Paramiko Pythona i robi wszystko - SSH i uruchom lokalny skrypt Powershell na raz.

Szukałem i nie wydaje się, aby nie ma żadnych rozstrzygłych odpowiedzi.

Próbowałem Pythona Paramiko i działa. Jednak wszystko, co mogę zrobić, to Ssh na serwer zdalny i skopiuj pliki skryptu PowerShell za pomocą SFTP, aby uruchomić skrypt. Czy można w ogóle używać SFTP? Gdzie mogę po prostu uruchomić skrypt lokalnie bez wysyłania go?

Dzięki.

Kody, które próbowałem:

cmd4 = "powershell; echo './script.ps1' | powershell -File C:\\Users\\Desktop\\script.ps1"
cmd5 = "C:\\Users\\Desktop\\script.ps1"
stdin, stdout, stderr = ssh.exec_command(cmd4)
stdin.write(cmd5 + '\n')
stdin.flush()
time.sleep(5)

lines = stdout.readlines()
print (stdout.readlines())

Próbowałem wydrukować stdout, ale jest pusty.

Próbowałem też tego:

cmd5 = "C:\\Users\\Desktop\\script.ps1"
cmd6 = "powershell; echo './script.ps1;' | powershell -noprofile -noninteractive -command { $input | iex }"
stdin, stdout, stderr = ssh.exec_command(cmd6)
stdin.write(cmd5 + '\n')
stdin.flush()
time.sleep(5)

lines = stdout.readlines()
print (stdout.readlines())
1
Jonathan 14 kwiecień 2021, 12:12

1 odpowiedź

Najlepsza odpowiedź

Uruchom powershell na serwerze i wyżyj skrypt do jego wejścia.

Po prostu połączyć te dwa razem:

Błędny (niesprawdzony) przykład:

with open("C:\\Users\\Desktop\\script.ps1", "r") as f:
    script = f.read() + "\n"

cmd = "powershell -noprofile -noninteractive -"
stdin, stdout, stderr = ssh.exec_command(cmd)
stdout.channel.set_combine_stderr(True)
stdin.write(script)
stdin.flush()
stdin.close()

lines = stdout.readlines()
print(lines)
1
Martin Prikryl 21 kwiecień 2021, 05:26