Powershell电子邮件正文变量

时间:2016-10-21 11:22:04

标签: email powershell variables

我遇到了以可接受/可读格式捕获变量结果的问题,这些变量是通过电子邮件发送的。

以下是我使用的脚本

$body = Search-ADAccount -UsersOnly -AccountExpired -SearchBase 'OU=Test1,OU=TEST,OU=Accounts,DC=home,DC=ac,DC=uk' | select SamAccountName, DistinguishedName, AccountExpirationDate

$emailto = 'test@home.ac.uk'
$emailfrom = 'AD-Accounts@home.ac.uk'
$emailserver = '127.0.0.1'

Send-MailMessage -To $emailto -From $emailfrom -Subject 'Expired Accounts' -Body $body -SmtpServer $emailserver 

$ body变量输出正是我想在电子邮件正文中看到的。

  

SamAccountName DistinguishedName AccountExpirationDate   -------------- ----------------- ------------------- -   jumartin CN =用户1,OU = test1,OU =测试,OU =帐户,DC =家庭,DC = ac,DC = uk 19/10/2016 00:00:00
  ricohvalue CN =用户2,OU = test1,OU = TEST,OU =账户,DC =家庭,DC = ac,DC = uk 02/09/2016 00:00:00

但是,如果有多个过期用户,并且如果有一个过期用户比以下格式出现,则该电子邮件将显示为空白: -

  

@ {Sam帐户= userone; DistinguishedName = CN =用户1,OU = test1,OU = test,OU = Accounts,DC = home,DC = ac,DC = uk; AccountExpirationDate = 10/19/2016 00:00:00}

我正在寻找的是SamAccountName,DistinguishedName和AccountExpirationDate,它们在电子邮件正文中以一个很好的逐行格式显示。

我不知道如何在电子邮件中捕捉我在屏幕上看到的内容。有人能告诉我我做错了什么。

1 个答案:

答案 0 :(得分:0)

虽然我没有使用Search-ADAccount进行测试。当CMDlet返回数组中的多个用户时,使用Quest中类似的Get-QADUser会给我以下错误:

Send-MailMessage : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Body'.

所以最好确保你在身体里放的是一个字符串。

Send-MailMessage -To $emailto -From $emailfrom -Subject 'Expired Accounts' -Body ($body | Out-String) -SmtpServer $emailserver

或者将表格转换为正确的HTML并使用BodyAsHtml参数。