使用Start-DSCConfiguration

时间:2017-04-11 12:51:22

标签: powershell azure dsc

我的DSC配置看起来像这样

configuration DBServer
{
  param(
    [PSCredential]$SqlAdminCredential
  )

  node "localhost"
  {
    Script ConfigureSSRS {
      SetScript = {
        & sqlcmd -S $RSConnection -i $DBCreateFile -U $SQLAdminCredential.UserName -P $SQLAdminCredential.GetNetworkCredential().Password

我正在使用带有包含此Properties节点的DSC扩展的JSON模板部署在azure VM上运行它:

"Properties": {
    "SqlAdminCredential": {
        "userName": "PrivateSettingsRef:SQLAdmin",
        "password": "PrivateSettingsRef:SQLAdminPass"
    },

这两个值确实在protectedSettings节点中定义:

"SQLAdmin": "[parameters('sqlAuthenticationLogin')]",
"SQLAdminPass": "[parameters('sqlAuthenticationPassword')]"

但是每当我尝试使用凭据时,我会在上面列出的代码中不断获取空引用异常。我已经尝试了$using:SqlAdminCredential,我相信昨天我也试过$global:SqlAdminCredential

我目前正在尝试对此进行故障排除,但我不喜欢对我的配置进行更改,然后花15分钟等待部署以查看它是否有效。但是,我无法弄清楚如何使用Start-DscConfiguration传递此凭据对象参数,以便在现有VM上对其进行故障排除。我怎么能这样做?

如果您可以解决我的实际问题并告诉我如何从$SqlAdimCredential

内部访问ConfigureSSRS.SetScript,则可获得积分

2 个答案:

答案 0 :(得分:0)

目前,我已经决定表现不佳并且这样做:

configuration DBServer
{
  param(
    [PSCredential]$SqlAdminCredential
  )

  node "localhost"
  {
    $adminCreds = $SqlAdminCredential #a hack

    Script ConfigureSSRS {
      SetScript = {
        $SqlAdminCredential = $using:adminCreds

我会等待更好的解决方案,但这似乎有效。

答案 1 :(得分:0)

您有以下选择:

  1. 如果您需要在单个用户下运行整个脚本,请使用脚本资源的PSDSCRunAsCredential。

  2. 创建使用PSCredential Parameters的自己的DSC资源。