我正在使用一个更大的脚本来导入XAML,这就是为什么这些属性会有所不同。我有很多变量需要根据按钮点击更改可见性。因此,为了简化我的代码,我使用以下方法创建了一个变量数组:
[array]$CVariables += Get-Variable lblC* | Select -ExpandProperty Name
$CVariables += Get-Variable txtC* | Select -ExpandProperty Name
$CVariables += Get-Variable btnC* | Select -ExpandProperty Name
[array]$UVariables += Get-Variable lblU* | Select -ExpandProperty Name
$UVariables += Get-Variable txtU* | Select -ExpandProperty Name
$UVariables += Get-Variable btnU* | Select -ExpandProperty Name
[array]$PVariables += Get-Variable lblP* | Select -ExpandProperty Name
$PVariables += Get-Variable txtP* | Select -ExpandProperty Name
$PVariables += Get-Variable btnP* | Select -ExpandProperty Name
看到每个变量($CVariables
,$UVariables
和$PVariables
)只包含诸如“lblC_Name”和“txtC_Name”之类的名称,我需要将它们转换为工作变量。
我尝试了Get-Variable
,但这只是给了我价值。
例如:
PS> Get-Variable lblC_Name #This Yields... Name: lblC_Name Value: System.Windows.Controls.Label: Name:
我的最终目标是让这样的事情发挥作用:
if ($lstComputerName.IsSelected) {
$CVariables | % { $($_).Visibility = "Visible" }
}
在遍历字符串数组时我想知道的是,如何将其转换为变量并访问文本/内容和可见性等属性。
答案 0 :(得分:4)
如果仔细查看Get-Variable lblC_Name
的输出,您会发现该标签位于变量对象的 Value
属性中,因此& #39; s你需要使用的东西:
$CVariables | ForEach-Object {
(Get-Variable $_ -ValueOnly).Visibility = "Visible"
}
或
$CVariables | ForEach-Object {
(Get-Variable $_).Value.Visibility = "Visible"
}