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

如何用PowerShell构建可统计重复IP的CSV输出脚本

PowerShell脚本:统计IP重复次数并更新CSV

以下是实现需求的脚本,每次运行时会基于已有CSV数据更新IP的Total计数:

$file = "你的CSV文件路径.csv"

# 初始化IP计数哈希表
$ipCount = @{}

# 如果CSV文件存在,读取现有数据并加载到哈希表
if (Test-Path $file) {
    $existingData = Import-Csv -Path $file
    foreach ($entry in $existingData) {
        $ipCount[$entry.IP] = [int]$entry.Total
    }
}

# 处理本次要添加的IP列表
foreach ($test in $IPs) {
    $currentIP = $test.IP
    # 如果IP已存在,计数+1;不存在则初始化为1
    if ($ipCount.ContainsKey($currentIP)) {
        $ipCount[$currentIP] += 1
    } else {
        $ipCount[$currentIP] = 1
    }
}

# 将哈希表转换为PSCustomObject数组并排序
$updatedIPData = $ipCount.GetEnumerator() | ForEach-Object {
    [PSCustomObject]@{
        IP    = $_.Key
        Total = $_.Value
    }
} | Sort-Object -Property IP

# 导出到CSV(覆盖原有文件,因为是汇总更新)
$updatedIPData | Export-Csv -Path $file -NoTypeInformation -Encoding UTF8

关键说明:

  • 哈希表存储计数:用$ipCount哈希表快速查找和更新每个IP的计数,比遍历数组效率更高。
  • 读取已有数据:脚本先检查CSV是否存在,存在则读取现有Total值,确保计数是累积的。
  • 处理新IP:遍历本次的$IPs列表,对每个IP更新计数,不存在的IP初始化为1。
  • 重新生成CSV:最后将哈希表转换为对象数组,排序后导出覆盖原文件,确保CSV里始终是每个IP的最新累积计数。

补充:如果需要保留每次添加的操作记录(即每行对应一次添加),同时维护一个汇总的Total列,逻辑会有所不同,但根据需求描述,上述脚本实现的是「每个IP一行,Total记录该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.18 18:15:03