Powershell:foreach 中的动态变量

Powershell:foreach 中的动态变量

我正在尝试对动态用户列表进行一些计算,我将使用该列表运行搜索并匿名计算一些结果,然后将其添加到每个用户的运行总数中。例如:

$users = Get-ADUser -filter blah
[int]$usercount = $users.count

for ($z=1; $z -le $usercount; $z++) {
    **** create variable here - $user$z ***
}

当创建变量时,我需要它用于进一步的循环,在循环中我将为已存储在变量中的数字添加计数。

不,我不能使用 $user 变量,因为它必须在 foreach 循环结束后继续存在。

所以,问题是,在不知道可能对象的数量限制的情况下,如何生成那个递增变量?

- -编辑 - -

添加一个我正在谈论的简单例子......

反馈后,我正在查看哈希表,但仍然不知道如何引用。

想象一下,在一个动态列表中的人员之间进行多轮掷骰子游戏。我想每轮增加他们的总数。我的问题是最后一行,我试图用掷骰子更新总数。我如何引用哈希表值?

[CmdletBinding()]

param (
    [parameter(Mandatory=$false)][ValidateRange(1, [int32]::MaxValue)][int]$rounds = "15",
    [parameter(Mandatory=$false)][ValidateRange(1, [int32]::MaxValue)][int]$players = "2"
)

$ptotal = [ordered]@{}
for ($w=1; $w -le $players; $w++) {
    $ptotal.add("player$w", 0)
}

for ($z=1; $z -le $rounds; $z++) {
    Write-Host Round $z

    for ($y=1; $y -le $players; $y++) {

        $roll = (1..6 | get-random) + (1..6 | get-random)
        $ptotal.player$y = $ptotal.player$y + $roll
    }
}

答案1

在你的例子中$ptotal["player$y"] += $roll

你可以像关联数组和对象一样使用 Hashtable。关于它们的很好的读物是https://kevinmarquette.github.io/2016-11-06-powershell-hashtable-everything-you-wanted-to-know-about/(当然,要以官方文档为准)

相关内容