arrays - PowerShell/CLI : "Foreach" loop with multiple arrays

标签 arrays powershell foreach vmware powercli

我有一个 PowerCLI 脚本,可以关闭 VM,更改其内存和 CPU,然后重新打开它。我已经修改了脚本以利用变量。这一切都完美无缺。

我现在正在尝试修改脚本以利用数组,以便在众多虚拟机之间循环。关闭和打开 VM 的脚本部分运行良好。

我遇到的问题是在 foreach 循环中使用来自两个数组的变量。

对于 $vm_name 中的每个 VM,我需要设置在 $memory_gb 中找到的相应内存量。

这就是我所拥有的(它目前为所有 VM 设置了相同的内存量(“1”))...

$vm_name = @("OMAC-SBXWIN7AJM", "OMAC-SBXWIN2012R2AJM", "OMAC-SBXWIN2008R2AJM")
$memory_gb = 2,4,4

# SET THE VM MEMORY
Write-Host 'NOW SETTING THE VM MEMORY'
foreach ($objItem in $vm_name)
{Set-VM -VM $vm_name -MemoryGB 1 -confirm:$false 
Break
}

http://i.stack.imgur.com/E9hfY.png

...我试过在第一个循环中嵌套第二个 foreach 循环,但无济于事。

如何编写脚本以使 $vm_name 中的每个 VM 获得 $memory_gb 中找到的相应内存量?

最佳答案

您可以使用 Zip 功能:

function Zip($a1, $a2) {
    while ($a1) {
        $x, $a1 = $a1
        $y, $a2 = $a2
        [tuple]::Create($x, $y)
    }
}

用法:
zip 'a','b','c' 1,2,3 |% {$_.item1 + $_.item2}

结果:
a1
b2
c3

关于arrays - PowerShell/CLI : "Foreach" loop with multiple arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191803/

相关文章:

Javascript从两个对象数组生成矩阵

javascript - 为什么 AngularJS ng-model 返回 [object%20Object] 作为值而不是选项值(整数)?

javascript - underscore.js toArray 函数用于逗号分隔值

powershell - 如何从 powershell 将新的 PropertyGroup 添加到 csproj

php - 在 PHP 中使用复选框删除 MySQL 记录

python - 创建数组的 RDD

azure - Azure 点到站点 VPN 下载中缺少 VpnClientSetupAMD64.exe

arrays - PowerShell - 是否每小时创建一个文件?

python - 根据多种条件将列表中的项目替换为其他项目(小列表)

php - 在 codeigniter 上的 foreach 中的条件(排序依据)