【问题标题】:Leveraging powershell to compare two files and email me if a difference has been detected利用 powershell 比较两个文件并在检测到差异时给我发送电子邮件
【发布时间】:2018-11-03 01:25:53
【问题描述】:

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

【问题讨论】:

  • 比较对象 (gc adminreport.txt) (gc adminreport2.txt) | %{if ($_.SideIndicator -eq "

标签: powershell


【解决方案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

所以代码骨架和上面贴的一样。

【讨论】:

  • 运行脚本时出现此错误。我试过修改邮件格式。 Send-MailMessage:无法验证参数“正文”上的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后重试该命令。
  • 我第一次运行它时,它只是转储回命令提示符,并且没有发送任何电子邮件。我对第二个文本文件进行了更改并再次运行它。这次导致 Send-MailMessage:无法将“System.Object[]”转换为参数“Body”所需的类型“System.String”。不支持指定的方法。在 C:\script.ps1:4 char:145
  • 嗯...这很奇怪。这段代码的意图:($changedEntries -join ",") 是将$changedEntries 数组转换为字符串......你能输入$changedEntries.GetType(),输出是什么?
  • @mfarberg,我已使用以下代码更新了我的答案:($changedEntries -join ",") 用于-Bodyswitch。您是否已经使用此更改对其进行了测试?
  • 我又试了一次,这次没有报错,但是文件有明显差异时正文是空白的。就这样我们保持在同一页面上,这就是我的 ps1 文件目前的样子。 $changedEntries = 比较对象 (gc adminreport.txt) (gc adminreport2.txt) | ?{$_.SideIndicator -eq "
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
相关资源
最近更新 更多