所以我有一个从外部脚本动态创建的服务器数组变量。 我现在需要使用每个服务器的复选框列表填充我的GUI表单。在部署到所述服务器时,这将作为选择机制。
由于我不知道我的列表中将有多少台服务器,因此该表单必须动态创建复选框。我遇到的问题是设置这些新变量的参数,并添加到表单中。我只是不知道如何强制PS在复选框变量名称中扩展我的迭代器变量。 这是我目前所拥有的,它将创建我的变量,但不对参数应用更新:
$form1.Text = "Server Selection"
$form1.Name = "form1"
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 235
$System_Drawing_Size.Height = 500
$form1.ClientSize = $System_Drawing_Size
$i = 0
$y = 0
$serverList | %{
New-Variable -Name "Checkbox$i" -value (New-Object System.Windows.Forms.CheckBox)
set-variable -name "Checkbox$i.VisualStyleBackColor" -value $true
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 104
$System_Drawing_Size.Height = 24
$Checkbox{i}.Size = $System_Drawing_Size
$Checkbox{i}.TabIndex = $i
$Checkbox{i}.text = $_
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 60
$System_Drawing_Point.Y = 21 + $y
$Checkbox{i}.Location = $System_Drawing_Point
$Checkbox{i}.DataBindings.DefaultDataSourceUpdateMode = 0
$Checkbox{i}.name = "server"
$y = $y + 20
$i++
$form1.Controls.Add($Checkbox{i})
}
任何人都知道如何正确地进行扩展或分配?
答案 0 :(得分:2)
首先回答您的具体问题:
(Get-Variable "Checkbox$i").Value.Size = $System_Drawing_Size
但更一般地说,为什么不将复选框列表存储在数组中并通过索引访问它们?
编辑:让我告诉你。
$Checkboxes = @()
$serverList | %{
$Checkboxes += New-Object System.Windows.Forms.CheckBox
$Checkboxes[-1].VisualStyleBackColor = $true
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 104
$System_Drawing_Size.Height = 24
$Checkboxes[-1].Size = $System_Drawing_Size
$Checkboxes[-1].TabIndex = $i
$Checkboxes[-1].text = $_
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 60
$System_Drawing_Point.Y = 21 + $y
$Checkboxes[-1].Location = $System_Drawing_Point
$Checkboxes[-1].DataBindings.DefaultDataSourceUpdateMode = 0
$Checkboxes[-1].name = "server"
$y = $y + 20
$form1.Controls.Add($Checkboxes[-1])
}