根据条件启用或禁用 powershell 中的按钮?

根据条件启用或禁用 powershell 中的按钮?

我有一个带有一堆按钮的 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

相关内容