Eingefrorenes Powershell-Formular bei der Ausführung von SSH-Befehlen

375
igor

Habe ein einfaches Skript, das über Powershell-Formular ausgeführt wird

Auf Anforderung ruft er Informationen von Linux-Servern mit plinkBefehl ab und gibt sie als Ausgabe im Formular aus. Das Problem, dass das Formular einfriert, während Informationen abgerufen werden.

Ich habe versucht get-job, dasselbe Ergebnis zu verwenden

Mein ursprünglicher Befehl:

plink -batch -ssh $User@$srv -pw $pass -m $executeCommandFile | fl | out-string 

get-jobLogik hinzugefügt :

$myjob = start-job -scriptblock  While ( ($myjob | Select-Object -ExpandProperty State) -eq "Running") { sleep 1 } $results = receive-job -job $myjob 
1

1 Antwort auf die Frage

1
postanote

Trennen Sie die Schritte. Versuchen Sie, die Plink-Datenanforderung an eine temporäre Datei zu senden, haben Sie einen Monitor am temporären Speicherort und wenn der Schreibvorgang abgeschlossen ist, verwenden Sie Ihren Formularcode, um die temporären Dateidaten in Ihr Formular zurückzulesen, statt den Hintergrund-Job-Ansatz.

Habe es schon probiert. Die plink-Datenanforderung ist Teil des Formularcodes. Sie wartet also noch, bis sie in die Datei schreibt. Ich habe nicht das Wissen, um es von Formularcode, Hintergrundjob und temporärer Datei zu trennen, wie ich es im Internet gefunden habe. Aber es ist nicht gut für diesen Fall igor vor 6 Jahren 0
F: Was ist in dieser Batchdatei? F: Bekommen Sie überhaupt Ergebnisse in der Datei / Benutzeroberfläche? Außerdem wollte ich in meiner ersten Antwort hinzufügen, dass Sie eine Variable in einem lokalen Bereich im Vergleich zum Remote-Bereich verwenden. Siehe dies und insbesondere "Beispiel 5: Verwenden einer lokalen Variablen in einem Remote-Befehl" postanote vor 6 Jahren 0
1. wenn! [["" $ (dpkg -l) "= ~ (^ | [[: space:]])" $ package "(\ $ | [[: space:]])]]; dann Echo 1; fi; \\ überprüft mit dem Befehl `dpkg`, ob ein bestimmtes Linux-Paket installiert ist igor vor 6 Jahren 0
2. Die Ausgabe ist NULL oder 1, um sie in eine Variable zu bringen und dann relevante Berechnungen durchzuführen igor vor 6 Jahren 0
3. Sie meinen den Aufrufbefehl? igor vor 6 Jahren 0