在Powershell中循环遍历多个阵列

时间:2019-08-13 15:48:26

标签: powershell

我有2个数组,其中一个包含服务器名,另一个包含IP。

我需要遍历它们并为每个服务器创建一个如下所示的键值对

server1:ip1
server2:ip2

我已经写了下面的代码,但是问题是,如果我使用F11调试代码,它可以正常工作,但是我没有给出每次都不同的错误。

所以感觉那不是继续可靠的作品。

    $NewDNSEntryName = $DNSEntryName.Split(",")
    $DNSIPs = $DNSIP.Split(",")


if($DNSEntryName -match "," -or $DNSIP -match ",")
    {   

   0..($NewDNSEntryName.Count - 1) | ForEach-Object {

   $fullName=""
   $fullName += @("$($NewDNSEntryName[$_]):$($DNSIPs[$_])")

这是我面临麻烦的那一行

0..($NewDNSEntryName.Count - 1) | ForEach-Object

请让我知道为什么这段代码会像这样,否则任何其他想法都会受到赞赏

1 个答案:

答案 0 :(得分:3)

假设每个列表中的每个项目彼此完全对应,则可以使用for循环并遍历数组索引。

$NewDNSEntryName = $DNSEntryName.Split(",")
$DNSIPs = $DNSIP.Split(",")

for ($i = 0; $i -lt $DNSIPs.count; $i++) {
    "{0}:{1}" -f $NewDNSEntryName[$i],$DNSIPs[$i]
}

为使以上代码正常工作,$DNSEntryName$DNSIP必须是名称和IP之间带有逗号的单个字符串。如果$DNSEntryName$DNSIP已经是列表或数组,则需要做其他事情。

从技术上来说,鉴于以上所述,您的逻辑应该起作用。但是,$fullName在每次迭代时都被清空,这可能会产生不良结果。