![无法将本地加入 Azure DSC 自动化(响应代码:未经授权)](https://linux22.com/image/712733/%E6%97%A0%E6%B3%95%E5%B0%86%E6%9C%AC%E5%9C%B0%E5%8A%A0%E5%85%A5%20Azure%20DSC%20%E8%87%AA%E5%8A%A8%E5%8C%96%EF%BC%88%E5%93%8D%E5%BA%94%E4%BB%A3%E7%A0%81%EF%BC%9A%E6%9C%AA%E7%BB%8F%E6%8E%88%E6%9D%83%EF%BC%89.png)
我在将 Windows 计算机加入 Azure DSC 自动化时遇到困难。我收到以下错误:
向服务器 https://azureserver/accounts/XXXXXXXXXXXXXXXXXXXX 注册 Dsc Agent 失败。底层错误是:尝试使用 AgentId 注册 Dsc Agent XXXXXXXXXXXXXXXXXXXXX 服务器 https://azureserver/accounts/XXXXXXXXXXXXXXXXXXX/Nodes(AgentId='XXXXXXXXXXXXXXXXXXXXXX') 返回了意外响应代码 未授權。。 + CategoryInfo:InvalidResult:(root/Microsoft/...gurationManager:String)[],CimException + FullyQualifiedErrorId:RegisterDscAgentUnsuccessful,Microsoft.PowerShell.DesiredStateConfiguration.Commands.RegisterDscAgentCommand + PSComputerName:AZURE-TEST
这是我的元 mof 配置
参数( [参数(必填=$True)] [字符串]$RegistrationUrl, [参数(必填=$True)] [字符串]$RegistrationKey, [参数(必填=$True)] [字符串[]]$计算机名称, [Int]$RefreshFrequencyMins = 30, [Int]$ConfigurationModeFrequencyMins = 15, [字符串]$ConfigurationMode = "ApplyAndMonitor", [字符串]$NodeConfigurationName ) [DscLocalConfigurationManager()] 配置 DscMetaConfigs { 参数 ( [参数(必填=$True)] [字符串]$RegistrationUrl, [参数(必填=$True)] [字符串]$RegistrationKey, [参数(必填=$True)] [字符串[]]$计算机名称, [Int]$RefreshFrequencyMins = 30, [Int]$ConfigurationModeFrequencyMins = 15, [字符串]$ConfigurationMode = "ApplyAndMonitor", [字符串]$NodeConfigurationName, [布尔值]$RebootNodeIfNeeded= $False, [字符串]$ActionAfterReboot = "继续配置", [布尔值]$AllowModuleOverwrite = $False, [布尔值]$ReportOnly = $False ) if(!$NodeConfigurationName -或 $NodeConfigurationName -eq "") { $配置名称 = $null } 别的 { $配置名称 = @($节点配置名称) } 如果($ReportOnly) { $RefreshMode =“推送” } 别的 { $RefreshMode =“拉” } 节点 $ComputerName { 设置 { 刷新频率分钟 = $刷新频率分钟 刷新模式 = $刷新模式 配置模式 = $配置模式 允许模块覆盖 = $允许模块覆盖 如果需要重启节点 = $如果需要重启节点 重启后操作 = $重启后操作 配置模式频率分钟 = $配置模式频率分钟 } 如果(!$ReportOnly) { 配置存储库Web Azure自动化DSC { 服务器 URL = $RegistrationUrl RegistrationKey = $RegistrationKey 配置名称 = $配置名称 } 资源存储库Web Azure自动化DSC { 服务器 URL = $RegistrationUrl RegistrationKey = $RegistrationKey } } 报告服务器Web Azure自动化DSC { 服务器 URL = $RegistrationUrl RegistrationKey = $RegistrationKey } } } DscMetaConfigs -RegistrationUrl $RegistrationUrl -RegistrationKey $RegistrationKey -计算机名称 $env:计算机名称 -NodeConfigurationName $NodeConfigurationName
我有一个脚本,允许最终用户输入必要的信息(注册密钥、URL 等),生成元 mof,然后将其提供给 LCM。但是当我尝试执行时,我得到了上述错误。
以下是相关的 DSC 事件错误日志
作业 {6E7C0C83-BD69-11E7-BD75-005056852B86}: Http Client XXXXXXXXXXXXXXXXXXXXXX WebReportManager 配置失败 FullyQualifiedErrorId:ReportManagerSendStatusReportUnsuccessful CategoryInfo:InvalidResult:(:) [],InvalidOperationException ExceptionMessage:尝试向服务器发送状态报告 https://azureserver/accounts/XXXXXXXXXXXXXXXX/Nodes(AgentId='XXXXXXXXXXXXXXXXXXXXXXXXXXXX')/SendReport 返回意外响应代码未授权。 ,内部异常 。
有人知道问题可能出在哪里吗?鉴于错误,我假设它与权限/身份验证有关,但除了密钥之外,我不确定它还能是什么,我已经仔细检查以确保密钥是正确的。
答案1
我遇到了完全相同的问题,最后我找到了解决方案。
太长不看;
DSC-Oaas
删除服务器上的所有各种证书(使用 Powershell):
gci cert: -Recurse | where friendlyname -eq "DSC-OaaS Client Authentication" | Remove-Item -Verbose
然后将服务器注册到 Azure 自动化。
说明
查看 EventViewer 中的 DSC 日志,我发现一些看起来很有趣的条目。注意标识符Job
。
进一步查看条目列表,确保查看具有相同Job
标识符的条目,我发现一个条目告诉我与 Azure 自动化通信中使用了哪个证书:
我在本地机器证书存储中找到了该证书以及一堆其他类似的证书。
当我删除所有证书时friendlyname = DSC-OaaS Client Authentication
gci cert: -Recurse | where friendlyname -eq "DSC-OaaS Client Authentication" | Remove-Item -Verbose
..并将服务器成功注册到 Azure 自动化。