此代码打印一个简单的进程,一次只做一件事:
$files = 1..100
$i = 0
$files | Foreach-Object {
$progress = ("#" * $i)
Write-Host "`r$progress" -NoNewLine
$i ++
Start-Sleep -s 0.1
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想同时并行执行两件事,我无法输出进度,因为我无法更改并行循环之外的变量。这并没有完成所需的操作:
$files = 1..100
$i = 0
$files | Foreach-Object -ThrottleLimit 2 -Parallel {
$progress = ("#" * $i)
Write-Host "`r$progress" -NoNewLine
$i ++
Start-Sleep -s 0.1
}
Run Code Online (Sandbox Code Playgroud)
我找不到一个好的解决方案来访问外部变量,不仅可以使用 $Using 读取它,还可以更改它。这在 Powershell 7 中可能吗?