使用Powershell中的动态变量名称填充数组

时间:2014-12-23 15:12:38

标签: powershell matrix populate dynamic-variables

在这次新的冒险中,我需要尽快填充这个矩阵。 所以在我看来,我需要做的变量是:

for ($r = 0 ; $r -lt 5 ; $r++){
    new-variable r$r
    for ($i = 0 ; $i -lt 5 ; $i++){
    $rand = Get-Random -Minimum 0 -Maximum 50
    r$r += "$rand,"
    }
}

但它不起作用,它告诉我r0>不是已知的cmdlet。 这应该创建r0 ... r4变量,这意味着row0 ... row4,每个rn将填充一个随机数后跟一个逗号。
怎么做?
和... 我真的不知道我是不是以正确的方式做我的矩阵,但这就是我现在所拥有的:

$r1 = ""
        for ($i = 0 ; $i -lt 4 ; $i++){
        $rand = Get-Random -Minimum 0 -Maximum 50
        $r1 += "$rand,"
        }
    $r1 = $r1.Replace(" ",",")
    $r1 = $r1.TrimEnd(',')
#    Write-Host $r1

$r2 = ""
        for ($i = 0 ; $i -lt 4 ; $i++){
        $rand = Get-Random -Minimum 0 -Maximum 50
        $r2 += "$rand,"
        }
    $r2 = $r2.Replace(" ",",")
    $r2 = $r2.TrimEnd(',')
#    Write-Host $r2

$matrix = @(($r1),($r2))
foreach ($g in $matrix) {$g}

3 个答案:

答案 0 :(得分:1)

仅仅因为你other question我建立了这个来输出矩阵块中的随机数。它使用$width$height来定义$theMatrix的大小,该大小是作为字符串数组的数组构建的。

$width = 4
$height = 5

$theMatrix = @()
For($heightIndex = 1;$heightIndex -le $height;$heightIndex++){
    $theMatrix += ,@(1..$width | ForEach-Object{([string](Get-Random -Minimum 0 -Maximum 50)).PadLeft(2)})
}

$theMatrix | ForEach-Object{$_ -Join "|"}

这将构建一个随机数矩阵。我认为这在视觉上很重要,所以我将数字转换为字符串,以便在遇到单个数字时可以使用PadLeft以使输出看起来更清晰。最后使用$_ -Join "|"以可读的形式显示矩阵。随意将分隔符更改为逗号或其他内容。

示例输出

 1|27|23|20
29|10|25|21
31|37| 9|27
11|36|34|48
43|42|35| 9

答案 1 :(得分:0)

以这种方式尝试:

$r = 
 for ($i = 0 ; $i -lt 5 ; $i++){
  Get-Random -Minimum 0 -Maximum 50 
 }

答案 2 :(得分:0)

正如我认为Mjolinor钉牢它一样。

这将创建一些名为$ r0到$ r4的动态变量,这些变量将包含随机整数数组。

for ($r = 0 ; $r -lt 5 ; $r++){
    new-variable r${r} -Value @()

    $myDynVariable = get-variable r${r}
    for ($i = 0 ; $i -lt 5 ; $i++){
        $rand = Get-Random -Minimum 0 -Maximum 50
        $myDynVariable.Value += $rand
    }
}

一些结果:

$r0
24
44
23
19
32

$r1
40
12
40
28
15

$r2
41
25
19
42
5

$r3
49
43
29
15
6

$r4
32
48
22
9
4