如何检索MDT任务序列variables并在Powershell中正确使用它

我试图检索Powershell脚本中的MDT任务序列variables,然后在Powershell函数中使用该variables。 我的问题在于我想要检索的variables包含Powershellvariables,将无法正确parsing。 这是如何设置的:

  1. 在MDT中,我使用“设置任务序列variables” – 命名为“TS-Destination”和值“$($ env:systemdrive)\ dep”(不带引号)。

  2. 通过“运行Powershell脚本”任务添加一个PowerShell脚本,并以参数“-Source”Z:\ someprogram'“(不带引号)的forms运行为”%scriptroot%\ Script.ps1“(不带引号)。 在Powershell脚本中,我的问题所在的部分是这样的:

脚本的开始

[CmdletBinding()] Param( [Parameter(Mandatory=$True,Position=0)] [string]$Source, [Parameter(Mandatory=$False)] [string]$Destination ) $tsenv = New-Object -ComObject Microsoft.SMS.TSEnvironment If ($Destination -eq "") { $Destination = $tsenv.Value('TS-Destination') } Copy-Item $Source -Destination $Destination -Recurse 

脚本结束

首先,我想说的是,如果我在脚本中手动设置variables,那么脚本就可以工作,但是我希望它可以根据用户的喜好轻松改变和灵活(使用参数或TSvariables)。

我觉得这将工作是它会从“TS目的地”variables的值,并在$目标variables(并解决它)中使用它,但是当脚本运行它无法parsingvariables。 它得到一个错误,名称为“$($ env)”的驱动器不存在(这是从Copy-Item的错误,因为该variables没有解决)似乎停止读取冒号后面的variables值,但我无法弄清楚为什么。

当手动排除故障并设置值(通过使用$ tsenv.Value('TS-Destination')=“$($ env:systemdrive)\ dep”),然后使用该工程并正确地parsingvariables。转义字符和设置variables,但似乎没有工作。variables是否被定义为一个[string]参数的事实防止像这样的工作?

我需要这个值才能接受variables格式,因为这个脚本在任务序列的多个部分中使用,并且在部署过程中系统驱动器发生了变化。 我可以在任务序列中多次设置variables,但是这会使任务序列复杂化,而且我希望复杂的部分在脚本中:)

所以主要的问题是:

我如何正确地工作?