今天讨论的是如何在Powershell里实现一个简单的Template Engine的功能。
假设模板文件的内容如下:template.tt
hello $name
welcome $company
模板引擎的函数定义在Invoke-Template.ps1
function Invoke-Template { param( [string]$Path, [Scriptblock]$ScriptBlock ) function Get-Template { param($TemplateFileName) $content = [IO.File]::ReadAllText( (Join-Path $Path $TemplateFileName) ) $res = Invoke-Expression "@`"`r`n$content`r`n`"@" return $res } & $ScriptBlock }
调用的Powershell script是
. .\Invoke-Template.ps1 $root = $PSScriptRoot $res = invoke-Template -Path $root -scriptblock { $name="andy" $company="hp" Get-Template tempalte.tt } $res
输出为