将凭据传递到Azure资源管理器模板

将凭据传递到Azure资源管理器模板,azure,azure-resource-manager,azure-template,Azure,Azure Resource Manager,Azure Template,根据Microsoft文档,protectedSettings下列出的属性使用证书进行加密,并且不会在VM上的设置文件中以纯文本显示。但是,我的部署失败,出现以下错误 新azResourceGroupDeployment:00:08:49-资源 Microsoft.Compute/VirtualMachine/extensions 'DI-DEV-UKW-DB1/Microsoft.Powershell.DSC'失败,并显示消息'{ 状态:失败,错误:{ 代码:ResourceDeploymen

根据Microsoft文档,protectedSettings下列出的属性使用证书进行加密,并且不会在VM上的设置文件中以纯文本显示。但是,我的部署失败,出现以下错误

新azResourceGroupDeployment:00:08:49-资源 Microsoft.Compute/VirtualMachine/extensions 'DI-DEV-UKW-DB1/Microsoft.Powershell.DSC'失败,并显示消息'{ 状态:失败,错误:{ 代码:ResourceDeploymentFailure, 消息:资源操作已完成,终端设置状态为“失败”。, 详情:[ { 代码:VMExtensionProvisioningError, 消息:VM在处理扩展名“Microsoft.Powershell.DSC”时报告失败。错误消息:\DSC 扩展收到不正确的输入:发生编译错误 处理配置“SQLConfig”时。请检查错误 在错误流中报告并修改配置代码 正确。System.InvalidOperationException错误处理 类型为“SqlServerRole”的属性“PsDscRunAsCredential”:正在转换 不建议将加密密码存储为纯文本 有关在MOF文件中保护凭据的更多信息,请参阅 MSDN博客:\nAt C:\Packages\Plugins\Microsoft.Powershell.DSC\2.77.0.0\DSCWork\sqlserverconfig.ps1.19\sqlserverconfig.ps1:110 char:9\n+SqlServerRole转换和存储加密密码 不建议使用纯文本。有关安全保护的详细信息,请参阅 MOF文件中的凭据,请参阅MSDN博客: 找不到路径 “HKLM:\SOFTWARE\Microsoft\PowerShell\3\DSC”,因为它没有 存在。找不到路径 “HKLM:\SOFTWARE\Microsoft\PowerShell\3\DSC”,因为它没有 存在。System.InvalidOperationException错误处理属性 类型为“SqlServerLogin”的“PsDscRunAsCredential”:正在转换和 不建议将加密密码存储为纯文本。有关详细信息,请参阅 有关在MOF文件中保护凭据的信息,请参阅MSDN 博客:\nAt C:\Packages\Plugins\Microsoft.Powershell.DSC\2.77.0.0\DSCWork\sqlserverconfig.ps1.19\sqlserverconfig.ps1:100 char:9\n+SqlServerLogin转换和存储加密密码 不建议使用纯文本。有关安全保护的详细信息,请参阅 MOF文件中的凭据,请参阅MSDN博客: 找不到路径 “HKLM:\SOFTWARE\Microsoft\PowerShell\3\DSC”,因为它没有 存在。找不到路径 “HKLM:\SOFTWARE\Microsoft\PowerShell\3\DSC”,因为它没有 存在。\n\n另一个常见错误是指定类型的参数 PSCredential没有显式类型。请确保使用类型化的 DSC配置中的参数,例如:\n\n配置 示例{\n参数[PSCredential]$UserAccount\n…\n }\n请更正输入,然后重试执行扩展。\。 } ]}}


请查看我的代码链接

在这种情况下,错误是由于dsc试图删除SA用户。这是因为你配置错误。参考:

您需要使用MembersToInclude,而不是members,因为成员将用您指定的任何内容替换现有成员

我建议尝试在同一个vm上使用完全相同的输入在本地编译它,看看它是否有效。另一种测试方法是一个接一个地删除资源,这样您就可以将其缩小到特定的失败资源。另一件事:尝试这样做:

    [System.Management.Automation.PSCredential]$DomainCreds = New-Object System.Management.Automation.PSCredential ("domain_name\$($AdminCredentials.UserName)", $AdminCredentials.Password)

并在配置中使用$domainCreds变量,而不是adminCredentials。

您确定此配置在本地有效吗?这是一个非常普遍的错误,您传递凭据的方式是确定的您是指DSC?。是的,我在尝试将其部署到的服务器上使用test dscresource对其进行了测试。不,test dscresource不会真正测试您的配置。。。你能在测试服务器上手动运行吗?奇怪。。添加\u服务器角色\u系统管理员与PowerShell DSC资源MSFT一起失败\u SqlServerRole未能执行Set-TargetResource功能,错误消息为:System.InvalidOperationException:未能将成员“sa”删除到“XX-dev-ukw-db1\MSSQLSERVER”上名为“sysadmin”的服务器角色中。-->System.Management.Automation.MethodInvocationException:调用具有1个参数的DropMember时发生异常:服务器角色“sysadmin”的DropMember失败。-->Microsoft.SqlServer.Management.Smo.FailedOperationException:服务器角色“sysadmin”的删除成员失败。-->配置应添加sysadmin角色,而不是删除。通过ar模板的部署仍然失败。但是,使用start dscconfiguration的本地部署是有效的。你能从windows虚拟机内部获取日志并发布到这里吗?c:\windowsazure\插件或包或日志之类的内容,请查看链接。对于C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\2.77.0.0\DscExtensionHandler.1.20190221-201041的内容。是的,很遗憾,没有什么新内容。检查更新的答案