[英]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.