2017-10-10 17 views
1

XAMLをインポートするより大きなスクリプトを使用しているため、プロパティが異なるように見えます。ボタンのクリックに基づいてVisibilityを変更するために必要な多くの変数があります。文字列を使用可能な変数に変換

[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を試しましたが、それはちょうど私に値を与えます。 例:私は変数にそれを変換しないか、文字列の配列をループするとき知っていただきたいと思い何

if ($lstComputerName.IsSelected) { 
    $CVariables | % { $($_).Visibility = "Visible" } 
} 

 
PS> Get-Variable lblC_Name 
#This Yields... 
Name: lblC_Name 
Value: System.Windows.Controls.Label: Name: 

私の最終目標は、この作業のようなものを得ることですテキスト/コンテンツや可視性のようなものにアクセスすることができます。

答えて

4

あなたがGet-Variable lblC_Nameの出力を詳しく見てみた場合はそれはあなたが使用するために必要なものですので、あなたは、ラベルが変数オブジェクトのValue財産であることがわかります:

$CVariables | ForEach-Object { 
    (Get-Variable $_ -ValueOnly).Visibility = "Visible" 
} 

$CVariables | ForEach-Object { 
    (Get-Variable $_).Value.Visibility = "Visible" 
} 
関連する問題