如何在 DSC 脚本资源中引用脚本参数

How to reference Script Arguments in DSC Script Resource

我正在使用 TFS 2015 Update 2 创建一个版本。我的发布步骤之一是 "PowerShell on Target Machines" 任务,我用它来应用 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)"

然而,在这一点上,$data 似乎始终为空。如何将脚本参数字段中定义的参数放入我的脚本资源中?

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

然后获取参数就变成了声明你的参数的情况如下:

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

然后直接传入值:

脚本参数字段包含 'myFirstValue' 'mySecondValue'

或更好的变量:

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

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

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

   return $true
}

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