我遇到了以可接受/可读格式捕获变量结果的问题,这些变量是通过电子邮件发送的。
以下是我使用的脚本
$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,它们在电子邮件正文中以一个很好的逐行格式显示。
我不知道如何在电子邮件中捕捉我在屏幕上看到的内容。有人能告诉我我做错了什么。
答案 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参数。