Powershell 使用名称中的变量调用/设置变量

Powershell 使用名称中的变量调用/设置变量,powershell,Powershell,我正在尝试动态填充哈希表 创建空哈希表(这很好用) 现在添加到此哈希表(这不起作用) 问题是它没有将${summary_$count}读取为我以前设置的变量名。为了澄清,这是通过一个计数器运行的,所以我最终将以 $summary_01 $summary_02 等等等等。尝试创建如下变量: New-Variable ${summary}_${count} -Value @{} 您可以看到PowerShell是如何这样解读您的原创作品的: Write-Host $summary_$count

我正在尝试动态填充哈希表

创建空哈希表(这很好用)

现在添加到此哈希表(这不起作用)

问题是它没有将${summary_$count}读取为我以前设置的变量名。为了澄清,这是通过一个计数器运行的,所以我最终将以

$summary_01
$summary_02

等等等等。

尝试创建如下变量:

New-Variable ${summary}_${count} -Value @{}
您可以看到PowerShell是如何这样解读您的原创作品的:

Write-Host $summary_$count
如果您希望稍后使用组成变量访问该变量的值,请按如下方式访问:

$ht = Get-Variable ${summary}_${count}
或者只需使用-PassThru从新变量中获取它,例如:

$ht = New-Variable ${summary}_${count} -Value @{} -PassThru
$ht.Add($name, $value)
综上所述,不清楚为什么引用哈希表的变量需要动态命名。另一种方法是创建哈希表的哈希表,例如:

$ht = @{"${summary}_${count}" = @{}}
$ht["${summary}_${count}"].Add($name, $value)

尝试按如下方式创建变量:

New-Variable ${summary}_${count} -Value @{}
您可以看到PowerShell是如何这样解读您的原创作品的:

Write-Host $summary_$count
如果您希望稍后使用组成变量访问该变量的值,请按如下方式访问:

$ht = Get-Variable ${summary}_${count}
或者只需使用-PassThru从新变量中获取它,例如:

$ht = New-Variable ${summary}_${count} -Value @{} -PassThru
$ht.Add($name, $value)
综上所述,不清楚为什么引用哈希表的变量需要动态命名。另一种方法是创建哈希表的哈希表,例如:

$ht = @{"${summary}_${count}" = @{}}
$ht["${summary}_${count}"].Add($name, $value)

就我所见,您应该使用以下代码创建变量

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

就我所见,您应该使用以下代码创建变量

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

你能有一个哈希表数组吗?或者更好地使用带有3个属性的
[PSCustomObject]
;名称、值和计数。那就是我

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个属性的
[PSCustomObject]
;名称、值和计数。那就是我

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}
}
我的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\uuuu
的变量,但找不到它

我的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\uu
的变量,但未找到该变量。

感谢您的回复。我在帖子中提到创建空哈希表没有任何问题。这就是问题所在,因为我不知道如何引用包含变量的变量名。如果你有$ht,那是你得出的已知常数。我的脚本中没有这一点,我无法知道,因为我将遍历所有内容,所以所有变量都需要是动态的。然后使用
Get Variable${summary}\u${count}
方法。感谢您的回复。我在帖子中提到创建空哈希表没有任何问题。这就是问题所在,因为我不知道如何引用包含变量的变量名。如果你有$ht,那是你得出的已知常数。我的脚本中没有这个,我无法知道,因为我将循环遍历所有的东西,所以所有变量都需要是动态的。然后使用
Get Variable${summary}{count}
方法。谢谢你的回复,你会在帖子中注意到,我知道如何创建变量,在问题发生后引用它。好的,请按照Keith写的那样做,
get variable
。请记住
$summary\uu$count
将被视为
$sumary\ucode>concat
$count
谢谢你的回复,你会在帖子中注意到我知道如何创建变量,这是问题所在。好的,请按照Keith写的,
获取变量
。请记住,
$summary\$count
将被视为
$sumary\
concat
$count
我计算出所有这些变量的原因是基于日志文件的内容动态创建对象。是的,我这里的问题是如何访问名称中包含变量的新变量。
Set variable
是如何访问它的。我弄明白所有这些变量的原因是基于日志文件的内容动态创建对象。是的,我这里的问题是如何访问名称中包含变量的新变量。
Set variable
是如何访问它的。