繁体   English   中英

两个阵列上的 Powershell foreach

[英]Powershell foreach on two arrays

[电源外壳]

有 2 个数组 $arrayRG:

testRG1
testRG2
testRG3

和适当的 $arrayVM:

testVM1
testVM2
testVM3

问题:

如何运行下面的代码来停止虚拟机,因此将从数组中获取值,例如:

Stop-AzureRmVM -ResourceGroupName "testRG1" -Name "testVM1"
...

尝试 foreach 逻辑,但无法弄清楚如何获取这两个值,如下仅需要 ResourceGroup:

foreach ($VM in $arrayRG)
{
    Stop-AzureRmVM -ResourceGroupName $VM -Name "how to get name here?"
}

------------尝试过其他选项-----------

使用哈希表,但仍然没有运气。 设法得到这样的 $hash:

Name        Value
testRG1     TestVM1
testRG2     TestVM2
testRG3     TestVM3

当在哈希表上尝试 foreach 失败时:

foreach ($VM in $hash)
{
    Stop-AzureRmVM -ResourceGroupName $VM.Keys -Name $VM.Values
}

如果两个数组之间存在一对一的关系,则可以使用for循环并访问每个数组中的相同索引:

for ($i = 0; $i -lt $arrayRG.Count; $i++) {
    Stop-AzureRmVM -ResourceGroupName $arrayRG[$i] -Name $arrayVM[$i]
}

您可以使用哈希表方法执行类似的操作。 您只需要先枚举密钥对。

$hash.GetEnumerator() | Foreach {
    Stop-AzureRmVM -ResourceGroupName $_.Key -Name $_.Value
}

您可以通过查找键然后使用这些键来获取值来使用哈希表

foreach($key in $hashtable.Keys) {
    $key                  # Prints the name
    $hashtable[$key]      # Prints the value

    Stop-AzureRmVM -ResourceGroupName $key -Name $hashtable[$key]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM