2

ハッシュテーブルを動的に設定しようとしています。

空のハッシュテーブルを作成します (これでうまくいきます)

New-Variable -Name $summary_$count -Value @{}

このハッシュテーブルに追加します (これは機能しません)。

${summary_$count}.Add($name, $value)

問題は、以前に設定した変数名として ${summary_$count} を読み取らないことです。明確にするために、これはカウンターを介して実行されているため、最終的には

$summary_01
$summary_02

などなど

4

4 に答える 4

4

次のように変数を作成してみてください。

New-Variable ${summary}_${count} -Value @{}

PowerShell がオリジナルを次のように解釈する方法を確認できます。

Write-Host $summary_$count

後で構成変数を使用してその変数の値にアクセスする場合は、次のようにアクセスします。

$ht = Get-Variable ${summary}_${count}

または、 -PassThru を使用して New-Variable から取得します。例:

$ht = New-Variable ${summary}_${count} -Value @{} -PassThru
$ht.Add($name, $value)

すべてを考慮しても、ハッシュテーブルを参照する変数に動的に名前を付ける必要がある理由は明確ではありません。別のアプローチは、ハッシュテーブルのハッシュテーブルを作成することです。

$ht = @{"${summary}_${count}" = @{}}
$ht["${summary}_${count}"].Add($name, $value)
于 2013-05-23T21:29:07.803 に答える
0

ハッシュ テーブルの配列を取得できますか? [PSCustomObject]または、3 つのプロパティを使用するとさらに効果的です。名前、値、およびカウント。それは私だけです。

for($i=0;$i-lt100;$i++){
    $summary += @([PSCustomObject]@{Name=$name;Value=$value;Count=$i})
}
$summary | sort -property count

あなたは興味深い質問を指摘します。

foreach($count in (1..10)){
    New-Variable -Name "Summary_$count" -Value @{}
    #Now how do you access the variable you just created?
    #Check out Get-Help Set-Variable -Full
    Set-Variable -Name "Summary_$count" -Value @{$name,$count}
}
于 2013-05-24T09:15:37.893 に答える
0

私の2セント:

PS C:\ps> $summary = "Summary"
PS C:\ps> $count = 1
PS C:\ps> $name = "John"
PS C:\ps> $value = 10
PS C:\ps> New-Variable -Name $summary`_$count -Value @{} # note the escaped underscore!
PS C:\ps> iex "`$$summary`_$count.add('$name',$value)"
PS C:\ps> $Summary_1

Name                           Value
----                           -----
John                           10

アンダースコアは、powershell パーサーが最初の変数の終了位置と 2 番目の変数の開始位置を認識できるようにエスケープする必要があります$summary_

于 2013-05-24T12:49:31.303 に答える