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

时间:2015-01-08 07:57:57

标签: variables powershell types

在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上?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我认为问题是Get-Variable返回PSVariable类型的对象,因此Panel对象在其中定义。使用成员属性value来检索它,如下所示:

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