You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell邮件脚本的JSON配置中实现变量替换

解决PowerShell JSON配置中变量无法替换的问题

问题根源

直接读取并解析JSON文件时,PowerShell不会自动识别JSON字符串里的$TaskTime、$ReleasedFeatures这类变量——JSON内容会被当作纯文本处理,变量名不会被替换为实际值。

解决方案

方法一:手动字符串替换(安全可控)

适合配置内容固定、占位符明确的场景,完全避免代码注入风险。

  1. 修改JSON配置(建议用自定义占位符替代$开头的变量,避免混淆):
{
  "To": "recipient@example.com",
  "Subject": "Release Notification - {{TaskTime}}",
  "Body": "New features released at {{TaskTime}}:\n{{ReleasedFeatures}}"
}
  1. 编写PowerShell脚本实现替换:
# 定义实际业务变量
$TaskTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$ReleasedFeatures = "- Feature 1: 新增用户权限管理`n- Feature 2: 优化数据导出功能"

# 读取并解析JSON配置
$mailConfig = Get-Content -Path ".\mailConfig.json" -Raw | ConvertFrom-Json

# 替换主题和正文中的占位符
$mailConfig.Subject = $mailConfig.Subject -replace '{{TaskTime}}', $TaskTime
$mailConfig.Body = $mailConfig.Body -replace '{{TaskTime}}', $TaskTime -replace '{{ReleasedFeatures}}', $ReleasedFeatures

# 发送邮件(按需补充发件人、SMTP服务器信息)
Send-MailMessage -To $mailConfig.To `
  -Subject $mailConfig.Subject `
  -Body $mailConfig.Body `
  -From "release-notify@example.com" `
  -SmtpServer "smtp.example.com"

方法二:使用ExpandString自动解析变量(灵活但需注意安全)

如果需要自动识别所有PowerShell变量,可利用PowerShell的字符串解析能力,但仅当JSON配置来源完全可信时使用,否则存在代码注入风险。

# 定义实际业务变量
$TaskTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$ReleasedFeatures = "- Feature 1: 新增用户权限管理`n- Feature 2: 优化数据导出功能"

# 读取JSON原始文本(不提前解析为对象)
$mailConfigRaw = Get-Content -Path ".\mailConfig.json" -Raw

# 解析文本中的PowerShell变量
$parsedConfig = $ExecutionContext.InvokeCommand.ExpandString($mailConfigRaw)

# 转换为JSON对象
$mailConfig = $parsedConfig | ConvertFrom-Json

# 发送邮件
Send-MailMessage -To $mailConfig.To `
  -Subject $mailConfig.Subject `
  -Body $mailConfig.Body `
  -From "release-notify@example.com" `
  -SmtpServer "smtp.example.com"

两种方案对比

  • 手动替换:安全可靠,适合固定占位符场景,需逐个处理变量。
  • ExpandString:自动解析所有变量,无需逐个替换,但存在安全风险,仅限可信配置使用。

内容的提问来源于stack exchange,提问作者ksoucek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:42:15