У меня есть файл HTML:
1.html
!DOCTYPE html>
<html>
<head>
<title>Password Reminder</title>
</head>
<body>
<p>
Dear user, your password expires in: <strong>$($days)</strong> days.
</p>
</body>
</html>
Я создал функцию, которая считывает содержимое файла и заменяет переменную $days фактическим значением переменной.
function ReadTemplate($days) {
$template_content = Get-Content "C:\PasswordReminder\1.html" -Encoding UTF8 -Raw
#$template_content = [IO.File]::ReadAllText($template)
$template_content = $template_content -replace "{}",$days
return $template_content
}
Но при вызове
$content = ReadTemplate -days 2
Вместо Уважаемый пользователь срок действия вашего пароля истекает через: 2 дня.
Я собираюсь
Уважаемый пользователь, срок действия вашего пароля истекает через: $($days) дней.
Вместо $($days) указал {0} но ничего
Попробуйте $template_content = $template_content.replace('$($days)',$days)
Вы можете использовать метод Escape:
$template_content -replace ([regex]::Escape('$($days)')), $days
Поскольку $($days) на самом деле является допустимым синтаксисом переменных PowerShell, вы, вероятно, просто захотите заменить его:
$Days = 17
$ExecutionContext.InvokeCommand.ExpandString($template_content)