2016-04-20 84 views
1

我正在玩DSC来管理2个节点,我已经能够设置我的拉服务器,但现在问题是从拉服务器不能正常工作的推/拉配置。DSC配置错误

我试着解决问题,我可以看到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 
    } 
    } 
} 

任何想法有什么不对?

回答

0

将配置放在拉服务器上时,必须包含从配置生成的校验和文件。你可以用the New-DscChecksum cmdlet来产生这个结果。

+0

我这样做,我能够启动一个配置,虽然它工作'开始-DscConfiguration -Computer server1 -Path。\ DashboardWebsite -Verbose' –

+0

@AdetiloyePhilipKehinde你的错误信息是明确指出它找不到校验和文件。每个配置有两个文件?除了'.checksum'命名相同?请注意,推送配置不需要校验和文件,所以'Start-DscConfiguration'不会因缺少校验和而失败。 – briantist

+0

是的,我在我的配置目录'\\ server1 \ c $ \ program中有两个文件'8394f90e-0525-4d0d-aa75-653b64981fc4.mof'和'8394f90e-0525-4d0d-aa75-653b64981fc4.mof.checksum' files \ windowspowershell \ dscservice \ configuration' –

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" 

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

0

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