如何在PowerShell哈希表中为客户端主机存储唯一的备份计划条目
解决PowerShell哈希表中备份计划的去重问题
我来帮你搞定这个备份计划去重的需求~先明确下你的目标:从test1.txt的每行内容里,提取数字之后、incr或manual之前的名称,并且让每个客户端主机对应的备份计划只保留唯一值。
先看你提供的test1.txt内容:
bpdppa301p.corpads.local 86929680 JC_UNIX_FS01_INCR JC_FS UNIX_FS01_INCR incr 02/24/2022 03/30/2022 03/30/2022 disk 1645678800 backup 84 MB /dbwsrp01/dbwsrp01 JCBDD1300P.corpads.local bpdppa302p.corpads.local 82578060 MN_DB_ORA manual 02/24/2022 04/21/2022 03/31/2022 disk 1645678854 80 MB RMAN:PFDPRE01_jf0mjj9l_1_1 MNBDD3302P.corpads.local bpdppa301p.corpads.local 86929880 JC_UNIX_FS01_INCR JC_FS UNIX_FS01_INCR incr 02/24/2022 03/30/2022 03/30/2022 disk 1645678800 backup 84 MB /dbwsrp01/dbwsrp01 JCBDD1300P.corpads.local
你原来的代码已经能正确提取备份计划,但缺少去重逻辑。这里给你两种简单的修改方案,都能实现每个客户端对应唯一备份计划的效果:
方案一:添加时即时去重(推荐)
在更新哈希表的过程中,每次添加新计划都和已有计划合并后去重,避免哈希表存储冗余数据:
$backupLogLines = @(Get-Content C:\scripts\test1.txt) -match "incr|full|manual" $planTable = @{} foreach ($line in $backupLogLines) { $metadataParts = $line -csplit "incr|full|manual" $clientHostName,$null,$backupPlans = -split $metadataParts[0] if(-not $planTable.Contains($clientHostName)){ # 首次添加客户端时,直接对当前计划去重 $planTable[$clientHostName] = @($backupPlans) | Select-Object -Unique } else { # 合并已有计划与新计划,再去重后更新哈希表 $planTable[$clientHostName] = ($planTable[$clientHostName] + $backupPlans) | Select-Object -Unique } }
方案二:最后统一去重(适合小数据量场景)
如果你的日志行数不多,也可以先按原逻辑收集所有计划,最后遍历哈希表统一去重,逻辑更直观:
$backupLogLines = @(Get-Content C:\scripts\test1.txt) -match "incr|full|manual" $planTable = @{} foreach ($line in $backupLogLines) { $metadataParts = $line -csplit "incr|full|manual" $clientHostName,$null,$backupPlans = -split $metadataParts[0] if(-not $planTable.Contains($clientHostName)){ $planTable[$clientHostName] = @($backupPlans) } else { $planTable[$clientHostName] += $backupPlans } } # 遍历哈希表,对每个客户端的计划统一去重 $planTable.Keys | ForEach-Object { $planTable[$_] = $planTable[$_] | Select-Object -Unique }
用你的测试数据验证的话,处理后bpdppa301p.corpads.local对应的备份计划会是JC_UNIX_FS01_INCR和JC_FS,重复的条目会被自动过滤掉。
内容的提问来源于stack exchange,提问作者postmaster 420
相关产品推荐
相关产品推荐

