我有以下内容:
Workflow Test {
$message = "Hey"
InlineScript{
Write-Output $using:message
Read-Host 'Get user input before proceeding.'
}
InlineScript{
Write-Output $using:message
}
}
Test
我得到的回报:
一个命令,提示用户失败,因为主机程序或 命令类型不支持用户交互。
在继续操作之前,有没有办法告诉工作流暂停用户输入?我正在使用Workflows来支持并行foreach - 但我想在操作之间暂停。
我可以试试这个:
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
然后我在那里重复了一些常数 - $message
- 这不是很干。
答案 0 :(得分:2)
PowerShell工作流旨在无需交互即可运行。每个工作流都被安排为在单独的PowerShell实例中运行的作业。
工作流程设计得健壮且平行,允许来自工作流程中间人员的输入会增加执行过程中出错的风险。
您可以使用常规param
关键字将参数传递到工作流程,这样您就可以获得预先执行工作流程所需的任何信息。
workflow DoStuff
{
param([string[]]$Value)
...
}
另一种不需要交互性的方法是考虑如何检测PowerShell何时应该继续进行下一个操作,而不是要求一个人。