根据Microsoft文档settings-vs-protectedsettings,protectedSettings下列出的属性已使用证书加密,并且在VM的设置文件中未以纯文本显示。但是,我的部署失败,并显示以下错误
new-azResourceGroupDeployment:00:08:49-资源 Microsoft.Compute /虚拟机器/扩展 “ DI-DEV-UKW-DB1 / Microsoft.Powershell.DSC”失败,并显示消息“ {
“状态”:“失败”,“错误”:{ “ code”:“ ResourceDeploymentFailure”, “ message”:“资源操作已完成,终端供应状态为“失败”。”, “细节”: [ { “ code”:“ VMExtensionProvisioningError”, “消息”:“ VM在处理扩展名'Microsoft.Powershell.DSC'时报告了故障。错误消息:\” DSC 扩展接收到错误的输入:发生编译错误 在处理配置“ SQLConfig”时。请检查错误 报告错误流并修改您的配置代码 适当地。 System.InvalidOperationException错误处理 类型“ SqlServerRole”的属性“ PsDscRunAsCredential”:正在转换 不建议将加密的密码存储为纯文本格式。对于 有关在MOF文件中保护凭据的更多信息,请参阅 MSDN博客:http://go.microsoft.com/fwlink/?LinkId=393729 \ nAt C:\ Packages \ Plugins \ Microsoft.Powershell.DSC \ 2.77.0.0 \ DSCWork \ sqlserverconfig.ps1.19 \ sqlserverconfig.ps1:110 char:9 \ n + SqlServerRole转换和存储加密的密码 因为不建议使用纯文本。有关安全的更多信息 MOF文件中的凭据,请参阅MSDN博客: http://go.microsoft.com/fwlink/?LinkId=393729找不到路径 'HKLM:\ SOFTWARE \ Microsoft \ PowerShell \ 3 \ DSC',因为它没有 存在。找不到路径 'HKLM:\ SOFTWARE \ Microsoft \ PowerShell \ 3 \ DSC',因为它没有 存在。 System.InvalidOperationException错误处理属性 类型为“ SqlServerLogin”的“ PsDscRunAsCredential”:转换和 不建议将加密的密码存储为纯文本格式。欲了解更多 有关在MOF文件中保护凭据的信息,请参考MSDN 博客:http://go.microsoft.com/fwlink/?LinkId=393729 \ nAt C:\ Packages \ Plugins \ Microsoft.Powershell.DSC \ 2.77.0.0 \ DSCWork \ sqlserverconfig.ps1.19 \ sqlserverconfig.ps1:100 char:9 \ n + SqlServerLogin转换和存储加密的密码 因为不建议使用纯文本。有关安全的更多信息 MOF文件中的凭据,请参阅MSDN博客: http://go.microsoft.com/fwlink/?LinkId=393729找不到路径 'HKLM:\ SOFTWARE \ Microsoft \ PowerShell \ 3 \ DSC',因为它没有 存在。找不到路径 'HKLM:\ SOFTWARE \ Microsoft \ PowerShell \ 3 \ DSC',因为它没有 存在。\ n \ n另一个常见错误是指定类型的参数 没有显式类型的PSCredential。请确保使用输入 DSC配置中的参数,例如:\ n \ n配置 示例{\ n param([[PSCredential] $ UserAccount)\ n ... \ n }。\ n请更正输入,然后重试执行扩展名。\“。 } ]}
请参阅我的代码Scripts
的链接答案 0 :(得分:1)
在这种情况下,错误是由于dsc尝试删除SA用户而引起的。这是因为您配置错误。参考:https://github.com/PowerShell/SqlServerDsc#sqlserverrole
您需要使用MembersToInclude
而不是成员,因为成员将用您指定的任何内容替换现有成员。
我建议尝试使用完全相同的输入(在同一台vm上)在本地进行编译,并查看其是否有效。另一种测试方法-逐个删除资源,这样您可以将其范围缩小到特定的故障资源。另一件事:尝试这样做:
[System.Management.Automation.PSCredential]$DomainCreds = New-Object System.Management.Automation.PSCredential ("domain_name\$($AdminCredentials.UserName)", $AdminCredentials.Password)
,然后在配置中使用该$ domainCreds变量,而不是adminCredentials。