2016-05-09 43 views
2

我正在使用TFS 2015 Update 2创建发行版。我的发布步骤之一是“目标机器上的PowerShell”任务,我正在使用它来应用DSC配置。如何在DSC脚本资源中引用脚本参数

我想使用脚本参数字段将参数从TFS传递到DSC脚本。

我的剧本是这样的:

Param(
    [string]$data 
) 

configuration ApplyConfig 
{ 
    Script Backup { 
     SetScript = { 
      #do some stuff with $data 
     } 

     TestScript = { 
      Write-Output "Print param" 
      Write-Output $data 

      return $true 
     } 

     GetScript = { 
      return @{"Test" = "test data"} 
     } 
    } 
} 

ApplyConfig 

脚本的参数字段包含此:

-Destination "$(ApplicationPath)" 

然而,在这一点上,$数据似乎永远是零。我如何将Script Arguments字段中定义的参数获取到我的脚本资源中?

回答

2

当引用$数据在TestScript你所需要的 '使用' 范围:

TestScript = { 
    Write-Output "Print param" 
    Write-Output $using:data 

    return $true 
} 

的TestScript上执行不同的PowerShell上下文; 'using'允许您在这些上下文中复制$ data的值。

1

我的灵活性建议是在你的DSC脚本中声明一个配置散列表并传入参数来配置它。我Continuous Delivery with TFS/VSTS – Server Configuration and Application Deployment with Release Management博客文章对如何使用DSC和TFS 2015年发布管理更新2

获取参数,然后成为你的声明参数如下的情况下,一个完整的演练:

param(
    [Parameter(Position=1)] 
    [string]$myFirstParameter, 
    [Parameter(Position=2)] 
    [string]$mySecondParameter 
) 

,然后在传递中的值直接:

脚本参数字段包含“myFirstValue”“mySecondValue”

或更好为变量:

脚本参数字段包含$(myFirstValue)$(mySecondValue)

+0

这是一篇很棒的文章!但是,直到我使用其他答案中的$ using前缀时,我才能够使用该配置技术。有什么想法吗? – kettch

+0

例如:Write-Verbose $ using:Node.NodeName -Verbose – kettch

+0

您不直接在DSC配置中使用参数 - 而是通过配置哈希表使用它们。我的文章显示了如何做到这一点。 –