[英]Powershell iterate variable name in function
我当前的目标是创建一个可以生成 $ProgressBar1、$ProgressBar2 等的函数。 同时定义名称并在下面给出适当的定义。 喜欢大小和位置。
这是针对带有 GUI 的过于复杂的 Powershell 脚本,我将调用一个包含任意数量项目的列表框到 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 中还有其他什么方法或如何最好地完成此操作。
我建议让函数根据传递给它的参数创建进度条(请注意,如果要在字符串中扩展变量,则必须使用双引号):
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++
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.