我尝试使用PowerShell DSC在RavenDB中设置复制,但是当我尝试编译配置时,我在TestScript
scriptblock中收到此错误:
PSDesiredStateConfiguration \ Node:格式化字符串时出错:输入字符串的格式不正确。
这是我的scriptblock:
TestScript = {
$result = Invoke-WebRequest -Method GET "http://localhost:8080/Databases/Test/Docs/Raven/Replication/Destinations" -UseBasicParsing
$ravenSlaves = "{0}".Split(",")
foreach($ravenSlave in $ravenSlaves)
{
if($result -notmatch $ravenSlave)
{
return $false
}
}
return $true
} -f ($Node.RavenSlaves)
RavenSlaves
的定义就像我的ConfigurationData中的字符串一样,用于这样的节点:
@{
NodeName = "localhost"
WebApplication = "test"
Role = "Master server"
RavenSlaves = "server1,server2"
}
当我使用foreach
迭代$ravenSlaves
变量时,问题似乎与此有关,因为如果删除foreach
(和{{1}在if
内部,配置编译并创建mof文件。
答案 0 :(得分:0)
Kiran通过他关于在配置中使用$using
修饰符的评论让我找到了正确的解决方案。
我将节点上的RavenSlaves
属性编辑为如下数组:
@{
NodeName = "localhost"
WebApplication = "test"
Role = "Master server"
RavenSlaves = @("server1,server2")
}
然后我将TestScript
- 块更改为:
TestScript = {
$result = Invoke-WebRequest -Method GET "http://localhost:8080/Databases/Test/Docs/Raven/Replication/Destinations" -UseBasicParsing
$ravenSlaves = $Node.RavenSlaves
foreach($ravenSlave in $using:ravenSlaves)
{
if($result -notmatch $ravenSlave)
{
return $false
}
}
return $true
}
在服务器上编译和运行的脚本以及RavenDB中的复制文档是正确的。