我有一个带有一堆按钮的 GUI。
我想获取特定范围的 IP 地址的 get-netneighbor。这些 IP 与我的 GUI 上的按钮相关。我的 IP 范围是
1-12
25-26
50-51
因此,如果我 get-netneighbor 并且它返回 7、26 和 50
我想设置
$button7.enabled = $true
$button26.enabled = $true
$button50.enabled = $true
其余的都默认设置为禁用。
不确定该如何处理这个问题。
$buttonarr = @('$Button1','$Button2','$Button3','$Button4','$Button5','$Button6','$Button7','$Button8','$Button9','$Button10','$Button11','$Button12','$Button25','$Button26','$Button50','$Button51')#0-15
foreach ($IPAddress in $getneighbor){
$cropped = ([ipaddress] "$IPAddress").GetAddressBytes()[3]
if($buttonArr -contains '$Reg'+$cropped){
$index = $buttonarr.IndexOf('$Reg'+$cropped)
$buttonarr[$index].enabled = $true
}
}
$form.ShowDialog()
错误信息是
The property 'enabled' cannot be found on this object. Verify that the property exists and can be set.
我当前测试的机器有设备
50
11
10
9
8
7
6
5
4
3
2
1
因此,当我启动 GUI 时应该启用这些按钮,而其他按钮则不应该启用。
答案1
也许是这样的:
- 创建按钮并将它们全部设置为 false
- 循环
$getneighbor
并设置按钮Enabled = True
这将返回以下代码:
# I assumed $getneighbor is an array of IPAddresses like this
$getneighbor = "10.0.0.9","10.0.0.24","10.0.0.51","10.0.0.164"
# Creating the Buttons
$Buttons = 1..12 + 25..26 + 50..51 | % {
$Name = "Button" + $_
[PSCustomObject]@{ Name = $Name ; Enabled = $false }
}
# Setting Buttons on enabled
foreach ($IPAddress in $getneighbor)
{
$Last = $IPAddress.split(".")[-1]
$Buttons | ? { $_.Name -eq ("Button" + $Last) } | % { $_.Enabled = $true }
}
这将创建一个按钮数组,如下所示:
PS C:\Users\SimonS> $Buttons
Name Enabled
---- -------
Button1 False
Button2 False
Button3 False
Button4 False
Button5 False
Button6 False
Button7 False
Button8 False
Button9 True
Button10 False
Button11 False
Button12 False
Button25 False
Button26 False
Button50 False
Button51 True
然后您可以这样做来返回所有启用的按钮:
PS C:\Users\SimonS> $Buttons | ? { $_.Enabled -eq $true } | select -expand Name
Button9
Button51