Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 使用ARM模板和DSC部署Azure VM和用户_Powershell_Arm Template_Dsc - Fatal编程技术网

Powershell 使用ARM模板和DSC部署Azure VM和用户

Powershell 使用ARM模板和DSC部署Azure VM和用户,powershell,arm-template,dsc,Powershell,Arm Template,Dsc,我第一次看到的是创建一个DSC(期望的状态配置),以配合ARM(Azure资源管理器)模板来部署Windows Server 2016和其他本地用户帐户。到目前为止,ARM模板运行良好,对于DSC文件,我使用简单的示例来测试功能。在我尝试传递用户名/密码以便创建本地Windows用户帐户之前,部署工作正常。我似乎根本无法使这个函数工作(请参阅下面的错误消息) 我的问题是,如何使用ARM模板将凭据(密码)传递到DSC(mof)文件,以便创建用户而不必显式允许纯文本密码(这不是一个好的做法) 这就是

我第一次看到的是创建一个DSC(期望的状态配置),以配合ARM(Azure资源管理器)模板来部署Windows Server 2016和其他本地用户帐户。到目前为止,ARM模板运行良好,对于DSC文件,我使用简单的示例来测试功能。在我尝试传递用户名/密码以便创建本地Windows用户帐户之前,部署工作正常。我似乎根本无法使这个函数工作(请参阅下面的错误消息)

我的问题是,如何使用ARM模板将凭据(密码)传递到DSC(mof)文件,以便创建用户而不必显式允许纯文本密码(这不是一个好的做法)

这就是我尝试过的:

DSC文件

Configuration xUser_CreateUserConfig {
[CmdletBinding()]

Param (

    [Parameter(Mandatory = $true)]
    [string]
    $nodeName,

    [Parameter(Mandatory = $true)]
    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    $Credential
)

Import-DscResource -ModuleName xPSDesiredStateConfiguration

Node $nodeName {
    xUser 'CreateUserAccount' {
        Ensure = 'Present'
        UserName = Split-Path -Path $Credential.UserName -Leaf
        Password = $Credential
    }
}
}

Azure ARM模板片段第一个方法

"resources": [
      {
          "apiVersion": "2016-03-30",
          "type": "extensions",
          "name": "Microsoft.Powershell.DSC",
          "location": "[parameters('location')]",
          "tags": {
            "DisplayName": "DSC",
            "Dept": "[resourceGroup().tags['Dept']]",
            "Created By": "[parameters('createdBy')]"
          },
          "dependsOn": [
            "[resourceId('Microsoft.Compute/virtualMachines', concat(variables('vmNamePrefix'), copyIndex(1)))]"
          ],
          "properties": {
            "publisher": "Microsoft.Powershell",
            "type": "DSC",
            "typeHandlerVersion": "2.19",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "wmfVersion": "latest",
              "modulesUrl": "[concat(variables('_artifactslocation'), '/', variables('dscArchiveFolder'), '/', variables('dscArchiveFileName'))]",
              "configurationFunction": "xCreateUserDsc.ps1\\xUser_CreateUserConfig",
              "properties": {
                  "nodeName": "[concat(variables('vmNamePrefix'), copyIndex(1))]",
                    "Credential": {
                        "UserName": "[parameters('noneAdminUsername')]",
                        "Password": "PrivateSettingsRef:UserPassword"
                    }
              }
            },
            "protectedSettings": {
              "Items": {
                  "UserPassword": "[parameters('noneAdminUserPassword')]"
              }
            }
          }
        }
    ]
"resources": [
    {
        "apiVersion": "2018-10-01",
        "type": "extensions",
        "name": "Microsoft.Powershell.DSC",
        "location": "[parameters('location')]",
        "tags": {
          "DisplayName": "DSC",
          "Dept": "[resourceGroup().tags['Dept']]",
          "Created By": "[parameters('createdBy')]"
        },
        "dependsOn": [
          "[resourceId('Microsoft.Compute/virtualMachines', concat(variables('vmNamePrefix'), copyIndex(1)))]"
        ],
        "properties": {
          "publisher": "Microsoft.Powershell",
          "type": "DSC",
          "typeHandlerVersion": "2.9",
          "autoUpgradeMinorVersion": true,
          "settings": {
            "wmfVersion": "latest",
            "configuration": {
              "url": "[concat(variables('_artifactslocation'), '/', variables('dscArchiveFolder'), '/', variables('dscArchiveFileName'))]",
              "script": "xCreateUserDsc.ps1",
              "function": "xUser_CreateUserConfig"
            },
            "configurationArguments": {
              "nodeName": "[concat(variables('vmNamePrefix'), copyIndex(1))]"
            },
            "privacy": {
              "dataCollection": "Disable"
            }
          },
          "protectedSettings": {
            "configurationArguments": {
              "Credential": {
                "UserName": "[parameters('noneAdminUsername')]",
                "Password": "[parameters('noneAdminUserPassword')]"
              }
            }
          }
        }
      }
  ]
错误消息 资源操作已完成,终端设置状态为“失败”。VM在处理扩展名“Microsoft.Powershell.DSC”时报告失败。错误消息:\\“DSC扩展收到不正确的输入:处理配置'xUser_CreateUserConfig'时发生编译错误。”。请检查错误流中报告的错误,并适当修改配置代码。System.InvalidOperationException处理类型为“xUser”的属性“Password”时出错:不建议将加密密码转换为纯文本并存储为纯文本。有关在MOF文件中保护凭据的更多信息,请参阅MSDN博客:

此错误消息没有帮助

Azure ARM模板片段第二种方法

"resources": [
      {
          "apiVersion": "2016-03-30",
          "type": "extensions",
          "name": "Microsoft.Powershell.DSC",
          "location": "[parameters('location')]",
          "tags": {
            "DisplayName": "DSC",
            "Dept": "[resourceGroup().tags['Dept']]",
            "Created By": "[parameters('createdBy')]"
          },
          "dependsOn": [
            "[resourceId('Microsoft.Compute/virtualMachines', concat(variables('vmNamePrefix'), copyIndex(1)))]"
          ],
          "properties": {
            "publisher": "Microsoft.Powershell",
            "type": "DSC",
            "typeHandlerVersion": "2.19",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "wmfVersion": "latest",
              "modulesUrl": "[concat(variables('_artifactslocation'), '/', variables('dscArchiveFolder'), '/', variables('dscArchiveFileName'))]",
              "configurationFunction": "xCreateUserDsc.ps1\\xUser_CreateUserConfig",
              "properties": {
                  "nodeName": "[concat(variables('vmNamePrefix'), copyIndex(1))]",
                    "Credential": {
                        "UserName": "[parameters('noneAdminUsername')]",
                        "Password": "PrivateSettingsRef:UserPassword"
                    }
              }
            },
            "protectedSettings": {
              "Items": {
                  "UserPassword": "[parameters('noneAdminUserPassword')]"
              }
            }
          }
        }
    ]
"resources": [
    {
        "apiVersion": "2018-10-01",
        "type": "extensions",
        "name": "Microsoft.Powershell.DSC",
        "location": "[parameters('location')]",
        "tags": {
          "DisplayName": "DSC",
          "Dept": "[resourceGroup().tags['Dept']]",
          "Created By": "[parameters('createdBy')]"
        },
        "dependsOn": [
          "[resourceId('Microsoft.Compute/virtualMachines', concat(variables('vmNamePrefix'), copyIndex(1)))]"
        ],
        "properties": {
          "publisher": "Microsoft.Powershell",
          "type": "DSC",
          "typeHandlerVersion": "2.9",
          "autoUpgradeMinorVersion": true,
          "settings": {
            "wmfVersion": "latest",
            "configuration": {
              "url": "[concat(variables('_artifactslocation'), '/', variables('dscArchiveFolder'), '/', variables('dscArchiveFileName'))]",
              "script": "xCreateUserDsc.ps1",
              "function": "xUser_CreateUserConfig"
            },
            "configurationArguments": {
              "nodeName": "[concat(variables('vmNamePrefix'), copyIndex(1))]"
            },
            "privacy": {
              "dataCollection": "Disable"
            }
          },
          "protectedSettings": {
            "configurationArguments": {
              "Credential": {
                "UserName": "[parameters('noneAdminUsername')]",
                "Password": "[parameters('noneAdminUserPassword')]"
              }
            }
          }
        }
      }
  ]
错误消息

Configuration xUser_CreateUserConfig {
[CmdletBinding()]

Param (

    [Parameter(Mandatory = $true)]
    [string]
    $nodeName,

    [Parameter(Mandatory = $true)]
    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    $Credential
)

Import-DscResource -ModuleName xPSDesiredStateConfiguration

Node $nodeName {
    xUser 'CreateUserAccount' {
        Ensure = 'Present'
        UserName = Split-Path -Path $Credential.UserName -Leaf
        Password = $Credential
    }
}
VM在处理扩展名“Microsoft.Powershell.DSC”时报告失败。错误消息:“DSC扩展接收到错误的输入:找不到与参数名称“$credential.Password”匹配的参数。另一个常见错误是指定PSCredential类型的参数,但没有显式类型。请确保在DSC配置中使用类型化参数,例如:配置示例参数”([PSCredential]$UserAccount)。请更正输入并重试执行扩展。有关疑难解答的详细信息,请访问

这没用


我已经尝试解决这个错误好几天了。我在谷歌上搜索了其他示例,但只能找到部署Web服务器的人的示例,Microsoft的文档没有帮助,因为它告诉您使用上述两种方法。当方法1是旧方法时(根据Microsoft)。因此,任何帮助都将不胜感激。

以下是我在配置中设置参数的方式:

# Credentials
[Parameter(Mandatory)]
[System.Management.Automation.PSCredential]$Admincreds,
然后在模板中:

"properties": {
    "publisher": "Microsoft.Powershell",
    "type": "DSC",
    "typeHandlerVersion": "2.19",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "configuration": xxx // doesn't matter for this question
        "configurationArguments": yyy // doesn't matter for this question
    },
    "protectedSettings": {
        "configurationArguments": {
            "adminCreds": {
                "userName": "someValue",
                "password": "someOtherValue"
            }
        }
    }
}
工作资料链接:

另外,你可能也需要这样做。老实说,我不记得了;)