我正在尝试将一个充满MSG文件的文件夹转换为HTML文件。我有一个可以获得大部分内容的脚本,但不是在powershell中显示文本,而是需要将每个文件保存为单独的html文件。出于某种原因,我无法将保存工作。我尝试过各种选项,比如out-file和$ body.SaveAs([ref] [system.object] $ name,[ref] $ saveFormat)
$saveFormat = [Microsoft.Office.Interop.Outlook.olSaveAsType]::olFormatHTML
Get-ChildItem "C:\MSG\" -Filter *.msg |
ForEach-Object {
$body = ""
$outlook = New-Object -comobject outlook.application
$msg = $outlook.Session.OpenSharedItem($_.FullName)
$body = $msg | Select body | ft -AutoSize
}
关于如何将其保存为单个文件的任何建议都会很棒。
答案 0 :(得分:0)
首先,您不应捕获变量中Format-*
cmdlet的输出。这些设计用于输出某些内容(屏幕,文件等)。
好的,除此之外,您已经打开了msg文件,因此您只需要确定一个名称,然后输出每个文件的HTMLBody属性。最简单的方法是将.htm添加到现有名称的末尾。
Get-ChildItem "C:\MSG\*" -Filter *.msg |
ForEach-Object {
$body = ""
$outlook = New-Object -comobject outlook.application
$msg = $outlook.Session.OpenSharedItem($_.FullName)
$OutputFile = $_.FullName+'.htm'
$msg.HTMLBody | Set-Content $OutputFile
}