コード例 #1
0
        private static List <string> GetConfigData(PsConfiguration configuration)
        {
            List <string> configData = new List <string>
            {
                "$ConfigData_" + configuration.GetId() + " = @{",
                "AllNodes = @(",
                "@{",
                "NodeName = '*'",
                "PSDscAllowDomainUser = $true",
                "PSDscAllowPlainTextPassword = $true",
                "}"
            };

            foreach (string server in configuration.Servers)
            {
                configData.AddRange(new List <string>
                {
                    ",@{",
                    "NodeName = '" + server + "'",
                    "}"
                });
            }
            configData.AddRange(new List <string>
            {
                ")",
                "}"
            });

            return(configData);
        }
コード例 #2
0
        private static List <string> GetConfigText(PsConfiguration configuration, DscRepository repository)
        {
            List <string> configText = new List <string> {
                "Configuration Config_" + configuration.GetId(), "{", "Param", "("
            };

            for (int i = 0; i < configuration.Variables.Keys.Count; i++)
            {
                if (i == configuration.Variables.Keys.Count - 1)
                {
                    configText.Add("$" + configuration.Variables.Keys.ElementAt(i));
                }
                else
                {
                    configText.Add("$" + configuration.Variables.Keys.ElementAt(i) + ",");
                }
            }
            configText.Add(")");
            configText.AddRange(configuration.GetUsedModules(repository).Select(module => "Import-DscResource -Module " + module));
            configText.AddRange(new List <string> {
                "Node $AllNodes.Nodename", "{"
            });
            HashSet <string> resourceStrings = new HashSet <string>();

            foreach (string roleString in configuration.Roles)
            {
                DscRoleNode roleNode = repository.Roles.GetRoleNode(roleString);
                resourceStrings.UnionWith(roleNode.Role.Resources);
            }
            foreach (string resourceString in resourceStrings)
            {
                DscConfigurationItemNode configurationItemNode = repository.GetConfigurationItemNode(resourceString);
                configText.AddRange(GetConfigurationItemText(configurationItemNode, repository));
            }
            configText.AddRange(new List <string> {
                "}", "}"
            });
            return(configText);
        }