DSC配置错误

时间:2016-04-20 15:41:50

标签: powershell dsc

我正在玩DSC来管理2个节点,我已经能够设置我的拉服务器,但现在的问题是从拉服务器推送/拉动配置,这是无效的。

我尝试对问题进行排查,我可以在GetAction请求的响应中看到错误,但我不知道这意味着什么。

http://server1:8080/PSDSCPullServer.svc/Action(ConfigurationId='8394f90e-0525-4d0d-aa75-653b64981fc4')/GetAction

{
  "odata.error": {
    "code": "",
    "message": {
      "lang": "en-US",
      "value": "nodeComplianceStatus or mofChecksum not found for MSFT.PSDSCAction."
    },
    "innererror": {
      "message": "nodeComplianceStatus or mofChecksum not found for MSFT.PSDSCAction.",
      "type": "System.ArgumentException",
      "stacktrace": ""
    },
    "MODATA.Exception.ErrorRecord": {
      "odata.type": "MODATA.Exception.DataServiceException",
      "ErrorCode": "",
      "MessageLanguage": "en-US",
      "StatusCode": 400,
      "Message": "nodeComplianceStatus or mofChecksum not found for MSFT.PSDSCAction.",
      "Data": [],
      "InnerException": {
        "Message": "nodeComplianceStatus or mofChecksum not found for MSFT.PSDSCAction.",
        "Data": [],
        "InnerException": null,
        "TargetSite": null,
        "StackTrace": null,
        "HelpLink": null,
        "Source": null,
        "HResult": -2147024809
      },
      "TargetSite": null,
      "StackTrace": "   at Microsoft.Management.Odata.Core.OperationManagerAdapter.InvokeMethod(IInvoker invoker, String functionName, String resourceTypeName, Boolean ignoreNotImplementedException)\r\n   at Microsoft.Management.Odata.Core.OperationManagerAdapter.InvokeOperationManagerFunction[T](Func`1 func, String functionName, String resourceTypeName, Boolean ignoreNotImplementedException, T defaultResultForNotImplementedException)\r\n   at Microsoft.Management.Odata.Core.OperationManagerAdapter.InvokeAction(ResourceType resourceType, IEnumerable`1 resourceKeys, String actionName, IEnumerable`1 inputParameters, ResourceType returnType)\r\n   at Microsoft.Management.Odata.Core.DataServiceInvokable.InvokeActionOnAst(RequestAstNode root)\r\n   at Microsoft.Management.Odata.Core.DataServiceInvokable.Invoke()\r\n   at Microsoft.Management.Odata.Core.DataServiceUpdateProvider.SaveChanges()\r\n   at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)\r\n   at System.Data.Services.DataService`1.HandleRequest()",
      "HelpLink": null,
      "Source": "Microsoft.Management.OData",
      "HResult": -2146233079
    }
  }
}

知道什么是错的吗?

3 个答案:

答案 0 :(得分:0)

在pull服务器上放置配置时,必须包含从配置生成的校验和文件。您可以使用the New-DscChecksum cmdlet生成此内容。

答案 1 :(得分:0)

从错误中可以看出,呼叫未到达DSC拉服务端点,并且由于请求正文中缺少某些内容而被OData服务拒绝。您可以使用Invoke-WebRequest来尝试排除故障。

$bodyArgs = @{Checksum="somechecksum"; ChecksumAlgorithm="SHA 256";NodeCompliant="false"} 
$jsonBodyArgs = $bodyArgs|ConvertTo-Json

Invoke-WebRequest -Uri "http://server1:8080/PSDSCPullServer.svc/Action(ConfigurationId='8394f90e-0525-4d0d-aa75-653b64981fc4')/GetAction"
-UseBasicParsing -Method Post -Body $jsonBodyArgs -Headers @{Accept="application/json"} -ContentType "application/json;odata=minimalmetadata;charset=utf-8"

拉服务器日志将包含有关向节点报告的故障的信息。可以使用以下方式获取日志:

Get-WinEvent -LogName
"Microsoft-Windows-Powershell-DesiredStateConfiguration-PullServer/Operational"

Get-WinEvent -LogName
 "Microsoft-Windows-ManagementOdataService/Operational"

这些日志通常包含足够的信息来解决根本问题。

答案 2 :(得分:0)

尝试检查您的pullserver是否实际指向proram文件\ windowspowershell而不是程序文件(x86)\ windowspowershell。 这可能是个问题。 DSC错误消息并不总是非常有用 查看pullservers webconfig文件,了解pullserver尝试为客户端提取其配置的位置。