我正在使用PowerShell在文本文件中导出管理员组成员的用户列表。然后我使用比较对象来查找差异。我希望自动化这一过程,如果发现差异,请给我发电子邮件。我可以比较这两个文件并发送电子邮件,但我意识到我不知道如何将比较的输出添加到电子邮件中。
也许这就是您想要的:
$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
}
更新:
我用简单的int数组测试了上面的代码。
$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
因此,代码框架与上面发布的内容相同。