-1

基本上我只是想将所有的 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和其他一些东西。

4

2 回答 2

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
于 2013-04-03T22:09:25.823 回答
2

格莱默是正确的。试图把它做成一张表格并将其放入电子邮件中只会弄得一团糟。您可以通过执行以下操作将其作为 HTML 列表格式放入电子邮件中:

[string]$body = $bios | ConvertTo-Html -As List

但是,如果您想要一个表格,您将不得不将其减少到合理数量的列以适合电子邮件。

于 2013-04-03T22:22:10.943 回答