我正在尝试使用文件资源来复制大量文件,其中大约20,000个文件跨越3000个目录。虽然DSC确实可以用于部署文件,但是当我尝试测试它们时遇到了问题。如果我在资源中只有几个文件,那么一切正常,但是如果我在那个破坏的东西中加载我的全套文件。我可以在目标节点上获得Test-DSCConfiguration并获得True结果(在我的测试服务器上将内存从4 gigs增加到16 gigs之后),但Get-DSCConfiguration会抛出此错误:
Get-DscConfiguration:已超出WBEM服务器限制(例如内存,连接......)。 在行:1个字符:1 + Get-DscConfiguration + ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ResourceBusy:(MSFT_DSCLocalConfigurationManager:root / Microsoft / ... gurationManager)[获取 -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错误有任何了解吗?
答案 0 :(得分:0)
不可否认,这是一个猜测,但我认为Get-DSCConfiguration
可能只是没有经过足够的测试,并且达到某种内部限制。
问题是,Get-DSCResource
实际上并未用作部分DSC(意味着LCM不会调用它,PowerShell不会在生成配置时使用它,Start-DSCConfiguration
不使用它,等)。
如果你手动调用它只会被调用,所以在很多方面它现在只是一个存根。
当我编写自定义资源时,我实际上试图使Get-
有用;通常是在内部调用Set-
和/或Test-
调用Get-
,但这样做可能是一个挑战。
因此,使用Get-DSCConfiguration
对给定资源进行良好测试是可行的。
抱歉,我对错误本身没有任何了解。文件资源不是脚本资源;我认为它实际上是本机编译的代码,所以很可能只有微软可以回答这个问题。
答案 1 :(得分:0)
您可以尝试增加WSMAN会话限制。以下是有关此问题的一些信息:http://blogs.msdn.com/b/powershell/archive/2010/05/03/configuring-wsman-limits.aspx
将MaxMemoryPerShellMB
增加到更大的值,然后尝试使用相同的资源。