PowerShell 查找 Forms.Panel 类型的所有变量

PowerShell Find all variables of the type Forms.Panel

在 PowerShell 中创建 .NET 窗体的过程中,我偶然发现了一个烦恼。我需要能够停用除必须显示的面板之外的所有面板的可见性。为此,搜索 System.Windows.Forms.Panel 类型的所有可用变量并将其状态设置为 $Panelx.Visible = $False.

似乎很方便

各类变量举例:

[String]$Stuff = 'Blabla'
$Panel1 = New-Object System.Windows.Forms.Panel
$Panel2 = New-Object System.Windows.Forms.Panel
$Panel3 = New-Object System.Windows.Forms.Panel
$Button = New-Object System.Windows.Forms.Button
$TabControl = New-object System.Windows.Forms.TabControl

这给了我正确的结果,但我无法将 Visible 状态设置为 $False

Get-Variable | ? {$_.Value} | ? {(($_.Value).GetType().Name) -eq 'Panel'} | % {
    $_.Visible = $false
}

怎么可能只列出类型面板的变量,然后放在$Panel.Visible = $False上?

感谢您的帮助。

我认为问题在于 PSVariable 类型的 Get-Variable returns 对象,因此在其中定义了 Panel 对象。使用成员 属性 value 来检索它,像这样:

Get-Variable |where {$_.Value -is [System.Windows.Forms.Panel] } | % {$_.value.visible = $false}