【问题标题】:How to reference Script Arguments in DSC Script Resource如何在 DSC 脚本资源中引用脚本参数
【发布时间】:2016-05-09 22:11:59
【问题描述】:

我正在使用 TFS 2015 Update 2 创建一个版本。我的发布步骤之一是“目标机器上的 PowerShell”任务,我用它来应用 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 似乎始终为空。如何将脚本参数字段中定义的参数放入我的脚本资源中?

【问题讨论】:

    标签: ms-release-management dsc


    【解决方案1】:

    当您在 TestScript 中引用 $data 时,您需要“使用”范围:

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

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

    【讨论】:

      【解决方案2】:

      对于灵活性,我的建议是在您的 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
      )
      

      然后直接传入其中的值:

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

      或更好的变量:

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

      【讨论】:

      • 这篇文章很棒!但是,在使用另一个答案中的 $using 前缀之前,我无法使用该配置技术。有什么想法吗?
      • 例如:Write-Verbose $using:Node.NodeName -Verbose
      • 您不直接在 DSC 配置中使用这些参数,而是通过配置哈希表使用它们。我的帖子展示了如何做到这一点。
      • 确实,这就是我尝试这样做的方式,但如果没有 $using 前缀,我什至无法引用哈希表的内容。
      • 不使用 $using 时会收到什么错误消息?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多