繁体   English   中英

通过PowerShell将特定变量添加到电子邮件正文

[英]Adding specific variables to an email body via PowerShell

我正在尝试创建一个PowerShell脚本,该脚本将在Outlook中打开新电子邮件并将特定信息放在那里。

 $Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "some@email.address.com"
$Mail.CC = $Outlook.Session.CurrentUser.Name
$Mail.Subject = "sme subject"
$Mail.HTMLBody = "Dear Support,<br><br>" + `
                 "SOme text here (logfile attached).<br><br>" + `
                 "URL: ex. https://stackoverflow.com/<br>" + `
                 "Name of browser: ex. Edge/Chrome<br>" + `
                 "Proxy name: " + (Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').proxyServer + "<br>" + `
                 "LAN/VPN/wifi: <br>" +  Get-NetConnectionProfile | select Name, InterfaceAlias + "<br>" + `
                ## "Kind regards,<br>" + $Outlook.Session.CurrentUser.Name
$Mail.Attachments.Add($logfile)

$Mail.Display()

正在创建电子邮件,甚至还有附件,但是

"LAN/VPN/wifi: <br>" +  Get-NetConnectionProfile | select Name, InterfaceAlias + "<br>" + `

这条线/零件不是真的工作,并且不确定为什么。 它留空了。 因此,在代理服务器名称之后,它将写入“ LAN / VPN / wifi:”,然后输入新行并带有签名。

您能帮我弄清楚,这到底是什么问题,为什么此值不在电子邮件正文中? 我应该怎么做才能解决这个问题?

您需要在Get-NetConnectionProfile | select Name, InterfaceAlias添加() Get-NetConnectionProfile | select Name, InterfaceAlias Get-NetConnectionProfile | select Name, InterfaceAlias命令,以便首先对其求值,然后将结果添加到您的字符串中。

"LAN/VPN/wifi: <br>" +  (Get-NetConnectionProfile | select Name, InterfaceAlias) + "<br>" + `

我还要指出的是,输出可能不是您想要的,因为这样最终会导致类似:

LAN/VPN/wifi: <br> @{Name=Domain.com; InterfaceAlias=Ethernet 1}<br>

如果您希望它看起来不错,请将其转换为HTML片段,以通过网络连接在电子邮件中获得一个漂亮的表:

"LAN/VPN/wifi: <br>" +  (Get-NetConnectionProfile | select Name, InterfaceAlias | ConvertTo-Html -Fragment) + "<br>" + `

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM