我目前的目标是创建一个可以生成$ ProgressBar1,$ ProgressBar2等的函数。在定义名称时,并在下面给出适当的定义。像大小和位置一样。
这是一个过于复杂的Powershell脚本w / GUI,我将调用一个列有任意数量项目的列表框到Foreach {MakeBar}。条形图将监控任务进度。
$ counter = 0当前是在脚本级别定义的。
function MakeBar
{
New-Variable -Name "ProgressBar$script:counter"
ProgressBar$script:counter = New-Object 'System.Windows.Forms.ProgressBar'
$loc = ((23 * $script:counter) + 12)
ProgressBar$script:counter.Location = '94, $loc'
ProgressBar$script:counter.Name = 'progressbar1'
ProgressBar$script:counter.Size = '1109, 23'
ProgressBar$script:counter.TabIndex = 1
$script:counter++
}
我已被警告过要修改当前范围之外的内容,但我不确定在Powershell中如何做到这一点或如何做到最好。
答案 0 :(得分:1)
我建议让函数根据传入的参数创建进度条(请注意,如果要在字符串中扩展变量,必须使用双引号):
function New-ProgressBar([int]$index) {
$bar = New-Object Windows.Forms.ProgressBar
$loc = (23 * $index) + 12
$bar.Location = "94, $loc"
$bar.Name = "progressbar$index"
$bar:counter.Size = '1109, 23'
$bar.TabIndex = $index
return $bar
}
并在循环(?)中执行所有计数器处理和变量赋值,调用函数:
$counter = 0
foreach (...) {
New-Variable -Name "ProgressBar$counter" -Value (New-ProgressBar $counter)
$counter++
}
我个人更喜欢将进度条放入哈希表而不是单个变量,但是:
$counter = 0
$progress = @{}
foreach (...) {
$progress["Bar$counter"] = New-ProgressBar $counter
$counter++
}