Ich habe folgend:Erfassen von Benutzereingaben von einem Powershell-Workflow
Workflow Test {
$message = "Hey"
InlineScript{
Write-Output $using:message
Read-Host 'Get user input before proceeding.'
}
InlineScript{
Write-Output $using:message
}
}
Test
Was ich im Gegenzug:
Ein Befehl, der Benutzer aufgefordert, schlug fehl, da das Host-Programm oder den Befehlstyp unterstützt keine Benutzerinteraktion.
Gibt es eine Möglichkeit, einen Workflow für die Benutzereingabe anzuhalten, bevor Sie fortfahren? Ich verwende Workflows, um parallele foreach zu unterstützen - aber ich möchte zwischen den Operationen pausieren.
Ich kann dies versuchen:
Workflow Test1 {
$message = "Hey"
InlineScript{
Write-Output $using:message
Read-Host 'Get user input before proceeding.'
}
}
Workflow Test2 {
$message = "Hey"
InlineScript{
Write-Output $using:message
}
}
Test1
// wait for user input
Test2
Aber dann habe ich Konstanten dort wiederholt - $message
- was nicht sehr trocken ist.
Ich bin ziemlich sicher, dass dies nicht möglich ist. Workflows können "interaktiv" ausgelöst werden, aber es wird erwartet, dass sie nicht interaktiv ausgeführt werden und oft gegen mehrere verschiedene Maschinen gleichzeitig ausgeführt werden. Der Grund, warum Sie "InlineScript" sogar zur Unterstützung aller PowerShell-Befehle benötigen, ist, dass es sich um eine andere Umgebung handelt, sodass Sie sich diese Blöcke als in einem anderen Runspace ausgeführt vorstellen können. – briantist
@briantist - Ich verstehe. Ich denke, ich könnte getrennte Workflows machen, aber dann muss ich alle meine Variablendeklarationen in jedem einzelnen wiederholen, was wirklich chaotisch erscheint. Irgendwelche Tipps dazu? Frage jetzt aktualisieren – RobVious
Wenn der einzige Grund für die Verwendung eines Workflows die Parallelität ist, würde ich nur die Verwendung von Jobs oder [PoshRsJob] (https://github.com/proxb/PoshRSJob) empfehlen. – briantist