我正在尝试对动态用户列表进行一些计算,我将使用该列表运行搜索并匿名计算一些结果,然后将其添加到每个用户的运行总数中。例如:
$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/(当然,要以官方文档为准)