【发布时间】:2018-08-02 17:38:31
【问题描述】:
我正在尝试向 powershell 中的表单添加进度条。我不想使用 PowerShell 的 Write-Progress cmdlet(因为当我从命令行运行脚本时,它会显示一个基于文本的进度条,而我总是想要一个基于表单/图形的进度条)。
我已经尝试过了,它似乎可以工作(在网上找到):
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
$form_main = New-Object System.Windows.Forms.Form
$progressBar1 = New-Object System.Windows.Forms.ProgressBar
$timer1 = New-Object System.Windows.Forms.Timer
$timer1_OnTick = {
$progressBar1.PerformStep()
}
$form_main.Text = 'ProgressBar demo'
$progressBar1.DataBindings.DefaultDataSourceUpdateMode = 0
$progressBar1.Step = 1
$progressBar1.Name = 'progressBar1'
$form_main.Controls.Add($progressBar1)
$timer1.Interval = 100
$timer1.add_tick($timer1_OnTick)
$timer1.Start()
$form_main.ShowDialog()| Out-Null
但是,我不希望事件更新进度条(就像上面示例中的 $timer1_OnTic 一样)我想通过在整个脚本中进行调用来自己更新它,例如:
$progressBar1.PerformStep()
或者
$progressBar1.Value = 10
所以我似乎需要某种后台工作人员来在我调用 PerformStep() 或更改 progressBar 的值时更新进度条
调用 ShowDialog 会停止脚本内的所有处理,直到表单关闭。
【问题讨论】:
标签: powershell