gpt4 book ai didi

loops - PowerShell:多个脚本的写入进度

转载 作者:行者123 更新时间:2023-12-04 15:01:50 25 4
gpt4 key购买 nike

我的研究:

好的,我已经看了几十个 Write-Progress 的例子。并观察到以下情况。大多数时候与循环结合使用,通常是“for”或“foreach”。大多数示例除了数到 100 之外什么都不做。其他更有用的示例将执行某个命令,例如复制文件。没有示例包含整个脚本。

我的设置:

我有几个脚本(数千行代码)在特定时间互相调用。一个脚本控制或调用所有其他脚本。该脚本运行了大约 15 分钟,在此期间我想使用 Write-Progress 提供状态.

我的问题:

我如何使用 Write-Progress在我所有的脚本正在执行时提供状态?基本上我想“包装”Write-Progress围绕我的所有脚本或任何从单个脚本为多个被调用脚本提供状态的最佳方法。

最佳示例:

到目前为止,我所看到的最好的用途是使用 Update-Help PowerShell V3 中的 CmdLet。但是因为我看不到 Update-Help 的源代码CmdLet,这对我没有帮助。

最佳答案

试试这个。第一个文件是 master.p1:

$parentId = 1
$childId = 2

Write-Progress -Id $parentId -Activity "Running master script" -Status "Step 1 of 3" -PercentComplete 0

.\slave.ps1 $parentId $childId

Write-Progress -Id $parentId -Activity "Running master script" -Status "Step 2 of 3" -PercentComplete 33.3

.\slave.ps1 $parentId $childId

Write-Progress -Id $parentId -Activity "Running master script" -Status "Step 3 of 3" -PercentComplete 66.3

.\slave.ps1 $parentId $childId

第二个文件是 slave.ps1:
param([int32]$ProgressParentId, [int32]$progressId)

for($i = 0; $i -le 100; $i += 10)
{
Write-Progress -Id $progressId -ParentId $parentId `
-Activity "Running slave script" `
-Status "Processing $i" `
-CurrentOperation "CurrentOp $i" -PercentComplete $i
Start-Sleep -Milliseconds 500
}

将这两个文件放在同一个目录中,然后从 PowerShell(或 ISE)执行 master.ps1。我之前使用过这种方法来报告跨多个脚本的多个阶段的进度。关键是通过 ParentId子脚本的顶级进度,以便他们可以在相同的上下文中报告进度。如果您提供唯一的 Id对于每个,他们可以得到自己单独的进度条。或者只是一样 Id随处更新单个进度条。

关于loops - PowerShell:多个脚本的写入进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com