我正在尝试动态填充哈希表。
创建空哈希表(这样可以正常工作)
New-Variable -Name $summary_$count -Value @{}
现在添加到此哈希表(这不起作用)
${summary_$count}.Add($name, $value)
问题是它没有读取$ {summary_ $ count}作为我之前设置的变量名。只是为了澄清这是通过一个计数器,所以我最终将结束
$summary_01
$summary_02
等等。
答案 0 :(得分:3)
尝试像这样创建变量:
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)
答案 1 :(得分:0)
据我所见,您应该使用以下代码创建变量
New-Variable -Name "summary_$count" -Value @{}
答案 2 :(得分: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}
}
答案 3 :(得分: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解析器知道第一个变量的结束位置,第二个变量开始,否则它会尝试查找名为$summary_
的变量而不查找它