利用Powershell比较两个文件,如果检测到差异,则通过电子邮件发送给我

时间:2018-11-02 15:07:58

标签: powershell

我正在使用PowerShell在文本文件中导出属于管理员组成员的用户列表。然后,我正在使用Compare-Object查找差异。我希望自动执行此过程,如果发现差异,请给我发送电子邮件。我可以比较这两个文件并发送电子邮件,但我知道我不知道如何将比较的输出添加到电子邮件中。

1 个答案:

答案 0 :(得分:1)

也许这就是您想要的:

$changedEntries = Compare-Object (gc adminreport.txt) (gc adminreport2.txt) | ?{$_.SideIndicator -eq "<="}  | select -expandproperty inputobject
Write-Host "Changed entries: $changedEntries"
if ($changedEntries) {
    $joinedChangedEntries = 
    send-mailmessage smtpserver mail .mydomaincom -To administrator@mydomain.com -From user@mydomain.com -Subject 'Admin member changed' -Body 
}

更新:

我用简单的整数数组测试了上面的代码。

$a = 1..4
$b = 4..8
$changedEntries = Compare-Object $a $b | ?{$_.SideIndicator -eq "<="}  | select -ExpandProperty inputobject
$joinedEntries = $changedEntries -join ","
if ($changedEntries) { write-host "Found changed entries: $joinedEntries" }
$joinedEntries.GetType()

 IsPublic IsSerial Name                                     BaseType
 -------- -------- ----                                     --------
 True     True     String                                   System.Object

所以代码框架与上面发布的相同。