如果存在重复的工作站和/或重复端口,则发送电子邮件警

时间:2014-12-10 16:58:34

标签: powershell

如果.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

2 个答案:

答案 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
}