执行期间处理用户输入

时间:2020-03-25 07:54:08

标签: powershell

如何使我的脚本在运行和执行后台任务时监听用户输入。 “读取主机”不执行我想要的操作,因为它显示提示并等待用户输入。 我不想等待,因为用户输入不是强制性的。不仅仅是在脚本执行过程中(脚本运行长时间循环),我想在不停止脚本的情况下更改某些参数。

例如,当我在键盘上按4时,脚本应在运行时将其选中并将特定变量设置为“ 4”,并继续将变量设置为该值进行处理。

听起来解决方案是使用某种“侦听器”,该侦听器位于背景中并听键盘敲击,但我不知道Powershell是否可以做到这一点。

编辑:我对帖子进行了一些澄清。它不是真正的代码,但显示了结构。有一个持久的循环会创建许多后台任务。如果数量低于限制,则会创建新的后台任务。 我想要的是能够通过输入新值来更改$ limit,而while循环保持运行。循环必须继续运行,而不要等待输入,因为输入完全可以选择。

$limit = SOME_VALUE
while($condition)
    { 
      if ($total_number_of_background_tasks < $limit) {
          create new background task }
    }
Continue to do something

1 个答案:

答案 0 :(得分:0)

您可以尝试这样,它会等待按键并将按键存储到变量中:

while($true){
  $key = [Console]::ReadKey().Key.ToString()
}

$ key每次都会被覆盖,因此要在其上附加按键:

$key = ""
while($true){
  $key += [Console]::Readkey().Key.Tostring()
}

将键存储为数组:

$key = @()
# Like upper one

可以像$ key [索引从0开始的索引]一样检索数组