得到wmiobject的win32:我如何通过电子邮件的输出
问题描述:
我有一切就位,至少我认为是这样。我想给自己发送Get-WmiObject win32命令的输出。例如:得到wmiobject的win32:我如何通过电子邮件的输出
$OS = "."
(Get-WmiObject Win32_OperatingSystem).Name |Out-String
$secpasswd = ConvertTo-SecureString "mypassword" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential
("[email protected]", $secpasswd)
Send-MailMessage -To "[email protected]" -SmtpServer
"smtp.office365.com" -Credential $mycreds -UseSsl "Backup Notification" -
Body $body -From "[email protected]"
我曾尝试以下:
$body = (
Write-Host "Computer Info:" -Message $PCinfo
) -join "`r`n"
Write-Verbose -Message $body
返回错误:“在‘身体’参数无法验证论点的论据是null或空。”
任何方向,建议或例子,将不胜感激。 谢谢
答
Write-Host
绕过通常的PowerShell数据路由(管道);你可能想看看Get-Help Out-String
或Get-Help Out-Default
寻找可能的选择。
在使用Write-Host
绕过流水线时,您将作业保留为“空” - 即没有要分配给变量的数据。由于$null
是一个变量的合法值,因此在变量用于不允许空值的上下文中(例如Send-MailMessage
)之前,这不会引发错误。
答
此格式为您提供更丰富的信息。这需要在Win32_OperatingSystem
类的内容,并将其转换成HTML表格,将其追加到$body
变量,用你的“计算机信息:”文字上面:
$body = "Computer Info: <br>"
$body += Get-WmiObject -Class Win32_OperatingSystem | ConvertTo-HTML -Fragment
通过其管道到Out-String
有效地再现$body
。这将确保它是一个字符串对象,其中Send-MailMessage
的-Body
参数要求:
$Body = $Body | Out-String
最后,调用Send-MailMessage
使用-BodyAsHTML参数,以确保邮件在发送的HTML电子邮件:
Send-MailMessage -To "[email protected]" -From "[email protected]" -SmtpServer "smtp.office365.com" -Credential $mycreds -UseSsl "Backup Notification" -Body $body -BodyAsHTML
谢谢每个人的帮助! – Wchristner