如果.dat文本文件(Windows)中存在重复的工作站或重复的端口,我的系统将完全无法使用,并认为powershell脚本有助于每隔一段时间读取文件以检查这些条件(不做更改)。我希望收到一封电子邮件,其中包含有关重复项目的信息。
文件中没有标题;这是一个样本:
WW1SI01LTJP,5459
OPAOGATB02,5460
WW1S101SPARE,5461
amichaud,5462
WT0080648a899c,5463
sbailie,5464
droberts,5465
WT0080648aaa2f,5466
WT008064865255,5467
nhxp557,5468
WT0080648aa8d2,5469
答案 0 :(得分:0)
尝试使用此方法查找重复项:
$wsht = @{}
$portht = @{}
Get-Content 'c:\somedir\somefile.dat' | foreach {
$parts = $_.split(',')
$wsht[$parts[0]] += @($_)
$portht[$parts[1]] += @($_)
}
$dupWs = $wsht.Values |
where {$_.count -gt 1 }
$dupPort = $portht.Values |
where {$_.count -gt 1}
$dupWs
$dupPort
答案 1 :(得分:0)
我将该文件导入为CSV并按列分组:
$data = Import-Csv 'C:\path\to\your.dat' -Header 'Workstation','Port'
$dw = $data | group 'Workstation' | ? { $_.Count -gt 1 } | select -Expand Name
$dp = $data | group 'Port' | ? { $_.Count -gt 1 } | select -Expand Name
$data | ? { $dw -contains $_.Workstation -or $dp -contains $_.Port }
if ($dw -or $dp) {
# send e-mail
}