基本上我只是想将所有BIOS信息输出到HTML表格并通过电子邮件发送给自己。
具体来说,我只是想恢复输出:
get-wmiobject -class "Win32_BIOS" -namespace "root\CIMV2"
进入一张桌子。我已经尝试了 convertto-html ,但输出到处都是,到很多列的方式(难以描述,在这里不能很好地翻译)。
到目前为止:
function sendMail{
$smtpServer = "server.com.au"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.IsBodyHTML = $true
$msg.From = "sender@server.com.au"
$msg.To.Add("email@server.com.au")
$msg.subject = "Subject"
$msg.body = "$body"
$smtp.Send($msg)
}
$bios = get-wmiobject -class "Win32_BIOS" -namespace "root\CIMV2"
$body = $bios | ConvertTo-Html
sendmail
虽然我也尝试过 format-table 等等。
答案 0 :(得分:2)
你是怎么想的那样的?期望的结果是什么? ConvertTo-HTML
将对象转换为包含表格的HTML页面。这意味着它包含了每个属性,这使得它很乱,因为它们有很多(通常是WMI对象)。如果ConvertTo-HTML
属性名称是标题,并且值是连续的,那么您可能会看到,当输出项目数组时,ConvertTo-HTML更合适(这将导致许多行具有单个标题行。
如果您只想显示某些属性,则需要在使用select-object
之前使用ConvertTo-HTML
对其进行定义。
另一种解决方案(取决于你需要的)只是使用控制台的输出而不是转换为html。实施例
$bios = get-wmiobject -class "Win32_BIOS" -namespace "root\CIMV2"
$body = $bios | Out-String
#You can use $bios | Format-List Your, Properties, Here | Out-String to specify different columns
$body
SMBIOSBIOSVersion : 3602
Manufacturer : American Megatrends Inc.
Name : 3602
SerialNumber : System Serial Number
Version : ALASKA - 1072009
或者
$body = $bios | Format-Table -AutoSize | Out-String
#Again, you can specify columns with $bios| Format-Table -AutoSize My, Properties | Out-String
SMBIOSBIOSVersion Manufacturer Name SerialNumber Version
----------------- ------------ ---- ------------ -------
3602 American Megatrends Inc. 3602 System Serial Number ALASKA - 1072009
答案 1 :(得分:2)
Graimer是正确的。试图把它变成一张桌子并把它放到一封电子邮件中只会弄得一团糟。您可以通过以下方式将其作为HTML列表格式发送到电子邮件中:
[string]$body = $bios | ConvertTo-Html -As List
但是如果你想要一张桌子,你将不得不将其削减到合理数量的列以适应电子邮件。