powershell - Powershell:如何从外部 HTML 文档中填充占位符(变量)?
问题描述
Send-MailMessage
我想用 Powershell 和函数发送 HTML 电子邮件。为了保持我的代码轻量级,我将 Mailbody 的 HTML 代码放在了我的 Powershell 代码之外。
挑战是,在发送电子邮件之前用 Powershell 变量替换 HTML 文件中的变量。
这里的代码不完整。我已经缩短了它以澄清问题。
正文.htm
<html>
<body>
<h1> Hello $Salutation! </h1>
</body>
</html>
我的脚本.ps1
$MailBody = Get-Content body.htm -Raw
$Salutation = "Foo Bar!"
$MailMessageParam = @{
"Subject" = "Mail from Powershell!"
"Encoding" = "UTF8"
"Body" = $MailBody
"BodyAsHtml" = $true
}
Send-MailMessage @MailMessageParam
我的问题是,变量$Salutation
不会被填充。变量的$MailBody
行为类似于直通。知道如何解决这个问题吗?
解决方案
我能想到的一种解决方案是$Salutation
用占位符替换 并使用格式运算符对其进行格式化。所以将body.htm更改为
<html>
<body>
<h1> Hello {0}! </h1>
</body>
</html>
然后在 hashtable( $MailMessageParam
) 集合中,
"Body" = ($MailBody -f $Salutation)
或者,您可以只使用ExpandString
返回一个字符串的方法,其中所有变量和表达式替换都已完成。
"Body" = $ExecutionContext.InvokeCommand.ExpandString($MailBody)
推荐阅读
- node.js - NodeJS + TypeScript 错误 TS2339:“性能”类型上不存在属性“timeOrigin”
- sql - 查找唯一标识符重复的每个字段的最大序列号
- html - Css flex对齐问题
- d3.js - 如何使用事件侦听器来切换我的 d3 条形图,我只能看到一个而不是两个?
- sql - 在查询中使用 group by 和 sum
- java - 如何忽略与嵌入引号交互的字符串中的单引号?
- java - 如何在每次点击后添加暂停/等待间隔?
- java - 无法使用 spring 和 java 7 启动 mule
- java - 具有简单域模型的 LazyInitializationException (Spring Boot/JPA)
- excel - VBA Excel 函数 - 无效的限定符