Powershell:如何为电子邮件格式化Get-Childitem?

时间:2012-01-18 17:59:02

标签: email powershell format newline

简单地说,我正在尝试从Powershell脚本发送一封电子邮件,其中列出了目录的内容。

为了做到这一点,我将文本存储在变量中,然后将此变量插入Send-MailMessage

我的问题是这个。当我按如下方式将对象传递给Out-String时,它不会插入换行符:

$mailbody += "<p>" + (get-childitem $path | select-object Name | Out-String -width 40) + "</P>"

显然,当在提示符下输入Get-Childitem时,输出很好地用换行符格式化,但是当存储到变量然后通过电子邮件发送(在HTML电子邮件中)时,没有新行,这导致不可读,长串文件名。

我该怎么做?

2 个答案:

答案 0 :(得分:6)

您可以使用ConvertTo-Html cmdlet执行此操作:

get-childitem $path | select-object Name | ConvertTo-Html -fragment

它将为您创建一个可以在HTML电子邮件中发送的漂亮表格。 -fragment部分删除了头部和身体等,只给出了表格。

答案 1 :(得分:2)

如何使用ConvertTo-Html cmdlet?填写您的环境信息。

$path = "C:\"
[string] $html = dir $path | ConvertTo-Html

$smptServer = ''
$to = ''
$from = ''
$subject = 'Test'
Send-MailMessage -To $to -From $from -Body $html -BodyAsHtml -SmtpServer $smptServer -Subject $subject

编辑 - 这有效,但电子邮件看起来像垃圾。如果您希望它看起来与在PowerShell窗口中执行dir时完全一样,请使用以下命令:

[string] $html = dir $path | Select Mode, LastWriteTime, Length, Name | ConvertTo-Html