[英]get wmiobject win32: how do I email the output
至少我认为一切都准备就绪。 我想通过电子邮件将Get-WmiObject win32命令的输出发送给自己。 例:
$OS = "."
(Get-WmiObject Win32_OperatingSystem).Name |Out-String
$secpasswd = ConvertTo-SecureString "mypassword" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential
("support@myemail.com", $secpasswd)
Send-MailMessage -To "support@myemail.com" -SmtpServer
"smtp.office365.com" -Credential $mycreds -UseSsl "Backup Notification" -
Body $body -From "support@myemail.com"
我尝试了以下方法:
$body = (
Write-Host "Computer Info:" -Message $PCinfo
) -join "`r`n"
Write-Verbose -Message $body
这将返回错误:“无法验证参数'Body'上的参数。该参数为null或为空。”
任何方向,建议或示例将不胜感激。 谢谢
这种格式为您提供了更丰富的信息。 这将获取Win32_OperatingSystem
类的内容,并将其转换为HTML表,并将其附加到$body
变量中,并在其上方带有“计算机信息:”文本:
$body = "Computer Info: <br>"
$body += Get-WmiObject -Class Win32_OperatingSystem | ConvertTo-HTML -Fragment
通过将$body
管道输送到Out-String
来有效地重新创建它。 这样可以确保它是一个字符串对象, Send-MailMessage
的-Body
参数需要:
$Body = $Body | Out-String
最后,在调用Send-MailMessage
使用-BodyAsHTML参数以确保电子邮件以HTML电子邮件形式发送:
Send-MailMessage -To "support@myemail.com" -From "support@myemail.com" -SmtpServer "smtp.office365.com" -Credential $mycreds -UseSsl "Backup Notification" -Body $body -BodyAsHTML
Write-Host
绕过常规的PowerShell数据路由(管道); 您可能希望查看Get-Help Out-String
或Get-Help Out-Default
以获取可能的替代方法。
在使用Write-Host
绕过管道的过程中,将分配保留给$body
“空”-也就是说,没有数据可分配给变量。 由于$null
是变量具有的合法值,因此不会在该变量用于不允许使用null值的上下文中(例如,使用Send-MailMessage
)时不会引发错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.