我有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
请让我知道为什么这段代码会像这样,否则任何其他想法都会受到赞赏
答案 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
在每次迭代时都被清空,这可能会产生不良结果。