使用powershell将.md文件的内容作为outlook电子邮件的正文

使用powershell将.md文件的内容作为outlook电子邮件的正文,powershell,outlook,markdown,Powershell,Outlook,Markdown,我想获取.md文件的内容,并将其显示在生成的outlook电子邮件的正文中。我可以生成电子邮件只是找到,但正文给出了以下错误,我还没有找到一个解决办法 错误: The object does not support this method. At line:6 char:1 + $new.HTMLBody = $a + ~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], COMException +

我想获取.md文件的内容,并将其显示在生成的outlook电子邮件的正文中。我可以生成电子邮件只是找到,但正文给出了以下错误,我还没有找到一个解决办法

错误:

The object does not support this method.
At line:6 char:1
+ $new.HTMLBody = $a
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
代码:


要绕过发布的错误消息,需要将文件作为字符串而不是字符串数组读取。原因是
$new.Body
需要一个字符串。默认情况下,
Get Content
返回一个数组,其中文件的每一行都是该数组的一个元素。您可以使用
-Raw
开关更改此行为,该开关将内容作为一个字符串读取

$a = Get-Content -Path "c:\temp\file.md" -Raw
如果
-Raw
开关更改了换行符格式,则始终可以使用您选择的换行符加入默认的
Get Content
数组

$a = Get-Content -Path "c:\temp\file.md"
$new.HTMLBody = $a -join "`r`n"
您可以使用PowerShell对象可用的
GetType()
方法查看原始代码中的类型差异

$a.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array


$new.Body.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

我试图使用
-Raw
命令,但随后MD文件丢失了所有格式。它就像一根长长的绳子。这可能只是换行格式。您可以用替换单个\r\n字符。另一个选项是删除-raw开关,然后使用@Keith将所有内容重新连接到一起。\r\n我做了一个更新,可能有助于格式化。
$a.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array


$new.Body.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object