Exemplo n.º 1
0
        private static List <string> GetConfigurationItemText(DscConfigurationItemNode node, DscRepository repository)
        {
            List <string> itemText = new List <string> {
                node.Parent.FriendlyName + " \"" + node.Name + "\"", "{"
            };

            foreach (DictionaryEntry entry in node.ConfigurationItem.Properties)
            {
                if (((entry.Value == null) || (entry.Value.ToString() == "")) && !node.Parent.GetRequiredOf(entry.Key.ToString()))
                {
                    continue;
                }
                switch (node.Parent.GetVariableTypeOf(entry.Key.ToString()))
                {
                case DscResource.VariableType.String:
                    if ((entry.Value != null) && (entry.Value.ToString().StartsWith("$") || entry.Value.ToString().StartsWith("\"")))
                    {
                        itemText.Add(entry.Key + " = " + entry.Value);
                    }
                    else
                    {
                        itemText.Add(entry.Key + " = \"" + entry.Value + "\"");
                    }
                    break;

                case DscResource.VariableType.Boolean:
                    itemText.Add(entry.Key + " = $" + entry.Value);
                    break;

                case DscResource.VariableType.Uint16:
                case DscResource.VariableType.Sint16:
                case DscResource.VariableType.Uint32:
                case DscResource.VariableType.Sint32:
                case DscResource.VariableType.Uint64:
                case DscResource.VariableType.Sint64:
                    itemText.Add(entry.Key + " = " + entry.Value);
                    break;

                default:
                    itemText.Add(entry.Key + " = \"" + entry.Value + "\"");
                    break;
                }
            }
            if (node.ConfigurationItem.DependsOn.Count > 0)
            {
                List <string> dependsOn = new List <string>();
                foreach (string dependency in node.ConfigurationItem.DependsOn)
                {
                    DscConfigurationItemNode dependencyNode = repository.GetConfigurationItemNode(dependency);
                    dependsOn.Add("'[" + dependencyNode.Parent.FriendlyName + "]" + dependencyNode.Name + "'");
                }
                itemText.Add("DependsOn = " + string.Join(",", dependsOn));
            }
            itemText.Add("}");

            return(itemText);
        }
Exemplo n.º 2
0
        public HashSet <string> GetUsedModules(DscRepository repository)
        {
            HashSet <string> modules         = new HashSet <string>();
            HashSet <string> resourceStrings = new HashSet <string>();

            foreach (string roleString in Roles)
            {
                DscRoleNode roleNode = repository.Roles.GetRoleNode(roleString);
                resourceStrings.UnionWith(roleNode.Role.Resources);
            }
            foreach (string resourceString in resourceStrings)
            {
                DscConfigurationItemNode configurationItemNode = repository.GetConfigurationItemNode(resourceString);
                if (configurationItemNode.Parent.Parent.Name != "PSDesiredStateConfiguration")
                {
                    modules.Add(configurationItemNode.Parent.Parent.Name);
                }
            }
            return(modules);
        }
Exemplo n.º 3
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);
        }