我正在尝试使用File资源来复制大量文件,其中大约20,000个文件跨越3000个目录。虽然DSC确实可以部署这些文件,但我在尝试测试这些文件时遇到了问题。如果我在资源中只有几个文件,一切都很好,但是如果我在那个中断中加载了我的全集。我可以在目标节点上获取Test-DSCConfiguration并获得True结果(在将测试服务器上的内存从4 16增加到16 16之后),但是Get-DSCConfiguration抛出了这个错误:
Get-DscConfiguration :已超过WBEM服务器限制(例如,内存、连接等)。第1行:1 char:1 + Get-DscConfiguration ++ CategoryInfo : ResourceBusy:(MSFT_DSCLocalConfigurationManager:root/Microsoft/...gurationManager) Get -DscConfiguration,CimException + FullyQualifiedErrorId : MI RESULT 27,Get -DscConfiguration
配置很简单:
File ServerBox { Ensure = "Present" Type = "Directory" Recurse = $true MatchSource = $true Force = $true Checksum = "modifiedDate" SourcePath = "\\DevOps\ServerBox" DestinationPath = "D:\ServerBox" }
起初我认为问题出在内存上,因为我甚至不能让Test-DSCConfiguration运行,但这一次抛出了内存错误,所以一旦我向系统添加了更多内存,我至少可以从测试中获得True结果。但是Get-DSCConfiguration仍然不起作用。
有人对WBEM错误有什么见解吗?
发布于 2015-03-03 03:41:00
诚然,这只是一种猜测,但我认为Get-DSCConfiguration可能只是没有经过足够的测试,正在达到某种内部限制。
问题是,Get-DSCResource实际上并没有被用作部分DSC (意思是LCM不调用它,PowerShell在生成配置时不使用它,Start-DSCConfiguration不使用它,等等)。
只有当你手动调用它时,它才会被调用,所以在很多情况下,它现在只是一个存根。
在编写自定义资源时,我实际上是想让Get-变得有用;通常是通过让Set-和/或Test-在内部调用Get-来实现,但这样做可能是一个挑战。
因此,给定的资源没有经过Get-DSCConfiguration的良好测试是可行的。
抱歉,我对错误本身没有任何见解。File资源不是脚本资源;我认为它实际上是本机编译的代码,所以很可能只有Microsoft可以回答这个问题。
发布于 2015-03-11 22:06:29
您可以尝试增加WSMAN会话限制。以下是有关这方面的一些信息:http://blogs.msdn.com/b/powershell/archive/2010/05/03/configuring-wsman-limits.aspx
将MaxMemoryPerShellMB增加到更大的值,然后尝试相同的资源。
https://stackoverflow.com/questions/28815652
复制相似问题