Hallo allerseits!
Ich möchte mit einem PowerShell-Skript einige Linux-Server überwachen
und dazu das Cmdlet "Start-ThreadJob" und PuTTYs Plink verwenden, etwa
so:
$job = Start-ThreadJob -ScriptBlock {
& "$env:ProgramFiles\PuTTY\plink.exe" -batch -load "server.example" "df /";
};
Die Ausgabe des Remote-Befehls lässt sich dann gut in PowerShell
weiterverarbeiten. Wenn ich jedoch statt "df /" den Befehl "apt update"
angebe, stürzt die ganze PowerShell-Sitzung (gefühlt mit einer
Wahrscheinlichkeit größer als 50%, also gut reproduzierbar) nach wenigen
Sekunden ab:
An error has occurred that was not properly handled. Additional
information is shown below. The PowerShell process will exit. Unhandled
exception. System.InvalidOperationException: Cannot read keys when
either application does not have a console or when console input has
been redirected. Try Console.Read.
at System.ConsolePal.ReadKey(Boolean intercept)
at System.Console.ReadKey(Boolean intercept)
at Microsoft.PowerShell.Internal.VirtualTerminal.ReadKey()
at Microsoft.PowerShell.PSConsoleReadLine.ReadOneOrMoreKeys()
at Microsoft.PowerShell.PSConsoleReadLine.ReadKeyThreadProc()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Für sich genommen läuft Plink in PowerShell völlig stabil. Auch
Thread-Jobs allein funktionieren zuverlässig. Nur Plink in einem
Thread-Job – und dann auch nur zusammen mit dem passenden Befehl auf dem
Remote-System – will offenbar nicht. Irgendwelche Hinweise, mit denen
ich den Bug-Report wenigstens an den richtigen Adressaten schicken kann?
--
<
https://schneegans.de/windows/no-8.3/> · Windows ohne PROGRA~1