You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何从API返回的IP数据生成完整IP数组?

实现方法(PowerShell)

要把IP段展开为单个IP的数组,核心思路是将IP地址转换为可计算的整数,通过遍历整数范围生成所有IP,再转换回字符串格式。

1. 定义IP与整数互转的辅助函数

# 将IPv4地址转换为32位整数
function ConvertTo-IPInt {
    param([string]$IPAddress)
    $octets = $IPAddress.Split('.')
    return [uint32]([uint32]$octets[0] -shl 24) + ([uint32]$octets[1] -shl 16) + ([uint32]$octets[2] -shl 8) + [uint32]$octets[3]
}

# 将32位整数转换回IPv4地址
function ConvertTo-IPString {
    param([uint32]$IPInt)
    return "$(($IPInt -shr 24) -band 255).$((($IPInt -shr 16) -band 255)).$((($IPInt -shr 8) -band 255)).$($IPInt -band 255)"
}

2. 遍历$IPs数据集生成全量IP数组

$NewIPs = @()

foreach ($item in $IPs) {
    # 处理单个IP(End字段为空)
    if ([string]::IsNullOrEmpty($item.End)) {
        $NewIPs += $item.Start
    }
    # 处理IP段(Start和End都有值)
    else {
        $startInt = ConvertTo-IPInt -IPAddress $item.Start
        $endInt = ConvertTo-IPInt -IPAddress $item.End
        
        # 遍历整数范围,转换为IP字符串并加入数组
        for ($i = $startInt; $i -le $endInt; $i++) {
            $NewIPs += ConvertTo-IPString -IPInt $i
        }
    }
}

# 可直接输出查看结果
$NewIPs

说明

  • 辅助函数通过位运算实现IP和整数的快速转换,哪怕是跨段(比如100.20.3.8到100.20.4.255这种第三位变化的IP段)也能正确遍历。
  • 遍历过程会自动识别单个IP和IP段,无需手动拆分标识。

内容的提问来源于stack exchange,提问作者greenGob19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:21:12