如何在DSC脚本资源

时间:2016-05-09 22:12:00

标签: ms-release-management dsc

我正在使用TFS 2015 Update 2创建发布。我的一个发布步骤是“目标计算机上的PowerShell”任务,我正在使用它来应用DSC配置。

我想使用Script Arguments字段将参数从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)"

但是,此时,$ data似乎总是为空。如何将脚本参数字段中定义的参数放入我的脚本资源?

2 个答案:

答案 0 :(得分:2)

当你在TestScript中引用$ data时,你需要'using'范围:

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

   return $true
}

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

答案 1 :(得分:1)

我对灵活性的建议是在DSC脚本中声明配置哈希表并传入参数以进行配置。我的Continuous Delivery with TFS / VSTS – Server Configuration and Application Deployment with Release Management博客文章详细介绍了如何在TFS 2015 Update 2中使用DSC和发布管理。

获取参数会成为声明参数的情况,如下所示:

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

然后直接传入值:

Script Arguments字段包含'myFirstValue''mySecondValue'

或更好的变量:

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