PowerShell加载动画

PowerShell加载动画,powershell,Powershell,我想创建一个GUI,在后台运行作业时显示加载栏。为简单起见,我将作业设置为无限循环,因此它应该始终运行。我只包含了代码的必要部分: $Label = new-object system.windows.forms.Label $Label.Font = 'Ariel,12pt' $Label.Text = "" $Label.AutoSize = $True $Label.Location = new-object system.drawing.size(50,10) $Form.Control

我想创建一个GUI,在后台运行作业时显示加载栏。为简单起见,我将作业设置为无限循环,因此它应该始终运行。我只包含了代码的必要部分:

$Label = new-object system.windows.forms.Label
$Label.Font = 'Ariel,12pt'
$Label.Text = ""
$Label.AutoSize = $True
$Label.Location = new-object system.drawing.size(50,10)
$Form.Controls.Add($Label)

$LoadingAnimation = @(".....","0....",".0...","..0..","...0.","....0",".....")
$AnimationCount = 0

$test = start-job -Name Job -ScriptBlock { for($t=1;$t -gt 0; $t++){} }
while ($test.JobStateInfo.State -eq "Running")
{
    $Label.Text = $LoadingAnimation[($AnimationCount)]
    $AnimationCount++
    if ($AnimationCount -eq $LoadingAnimation.Count){$AnimationCount = 0}
    Start-Sleep -Milliseconds 200
}

在控制台中测试此代码后,只需使用Write Host而不是$Label.Text,即可正常工作。要使其在PowerShell创建的windows窗体中正常工作,需要做哪些不同的操作?

在PowerShell中,您可以使用
写入进度创建各种状态,包括多级状态。别忘了在完成时用-Completed打电话(我看到了一个常见的错误)


Get Help Write Progress

查看脚本的小细节后,我发现了问题。以下是我激活表单的方式:

$Form.Add_Shown({$Form.Activate()})
[void] $Form.ShowDialog()
这导致启动表单时脚本停止,ShowDialog停止脚本以允许交互。解决办法是:

$Form.Add_Shown({$Form.Activate()})
[void] $Form.Show()

使用Form.Show可以让脚本继续运行,因为它不需要交互。

我过去使用过写入进度,但它显示在powershell控制台中。我试图在Windows窗体的中间创建自定义加载条,该窗体是由PortScript脚本创建和运行的。我不相信我要找的是写进度,我可能错了看看@LotPings这看起来很有希望,谢谢!在玩了一点之后,它确实显示了一个很好的进度条。不幸的是,我正试图做我自己的。不要使用Windows提供的通用版本。谢谢