如何在nodeName中使用“*”

时间:2017-04-14 16:08:02

标签: powershell azure dsc azure-automation

假设我在DSC设置中有两个角色,我的设置中有不同数量的节点:

$configdata = @{
    AllNodes = @(
        @{
            NodeName = "*Web*" # < problem lies here
                      # can be prodWeb## or devWeb##
            Role = "IIS", "basic"
        }
        @{
            NodeName = "*"
            Role = "basic"
        }
    )
}

DSC资源:

Configuration CFG
{   
    $AllNodes.where{ $_.Role.Contains("Basic") }.NodeName 
    {
    ...
    }

    $AllNodes.where{ $_.Role.Contains("IIS") }.NodeName 
    {
    ...
    }
}

我可以实现吗?

2 个答案:

答案 0 :(得分:1)

配置数据中的AllNodes条目是一个哈希表数组。每个哈希表都需要一个密钥NodeName。当表达式求值时,该值将被替换。所以像web *这样的节点名称将不起作用

答案 1 :(得分:0)

所以,基本上我所做的就是:

Configuration Windows
{   
    node $allnodes.NodeName {
        switch ($Node.Role) {
            "Role1" {
                ...
            }
            "Role2" {
                ...
            }
            "Role3" {
                ...
            }
        }
    }
}

我的配置数据:

@{ AllNodes = @( @{ NodeName = "web"; Role = "Role1", "Role2" } ) }

另一组节点:

@{ AllNodes = @( @{ NodeName = "other"; Role = "Role1", "Role3" } ) }

我正在使用Azure自动化为节点分配配置,因此它不检查节点名称,它只应用配置在编译时具有的任何角色。