public static void GroupPolicy() // This is useless, I guess.
        {
            Console.WriteLine("Executing GroupPolicy()...");
            XDocument doc       = new XDocument();
            GPDomain  domain    = new GPDomain();
            XElement  xmlDomain = new XElement("domain");

            int count = 0;

            GpoCollection gpos = domain.GetAllGpos();

            doc.Add(xmlDomain);
            foreach (Gpo currentGpo in gpos)
            {
                xmlDomain.Add(new XElement("GPO",
                                           new XElement("Computer", currentGpo.Computer),
                                           new XElement("Description", currentGpo.Description),
                                           new XElement("DisplayName", currentGpo.DisplayName),
                                           new XElement("DomainName", currentGpo.DomainName),
                                           new XElement("GpoStatus", currentGpo.GpoStatus),
                                           new XElement("Id", currentGpo.Id),
                                           new XElement("ModificationTime", currentGpo.ModificationTime),
                                           new XElement("Owner", currentGpo.Owner),
                                           new XElement("Path", currentGpo.Path),
                                           new XElement("User", currentGpo.User),
                                           new XElement("WmiFilter", currentGpo.WmiFilter)
                                           ));
                count++;
                Console.WriteLine(count);
                //if (count >= 20) break; //for testing purposes
            }
            doc.Save("D:\\GroupPolicy.xml");
            Console.WriteLine("GroupPolicy() done!");
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            // Pobranie biezacej domeny i jej GPO
            GPDomain      dom  = new GPDomain();
            GpoCollection gpos = dom.GetAllGpos();

            foreach (Gpo gpo in gpos)
            {
                // iteracja po GPO i generacja raportow XML-owych dla GPO
                string      xml = gpo.GenerateReport(ReportType.Xml);
                XmlDocument xd  = new XmlDocument();
                xd.LoadXml(xml);
                XmlNamespaceManager xnm = new XmlNamespaceManager(xd.NameTable);
                xnm.AddNamespace("q1", "http://www.microsoft.com/GroupPolicy/Settings/Security");

                // Wyszuwanie tych polityk, ktore dotycza LmCompatibilityLevel
                XmlNodeList nl = xd.SelectNodes("//*[q1:KeyName[text()[contains(.,'LmCompatibilityLevel')]]]", xnm);
                if (nl.Count > 0)
                {
                    // Wypisanie danych polityki i jej ustawien odpowiedzialnych za LmCompatibilityLevel
                    Console.WriteLine("\n " + gpo.DisplayName);
                    for (int i = 0; i < nl.Count; i++)
                    {
                        // Dla kazdego pasujacego elementu wypisanie info
                        XmlNode node          = nl.Item(i);
                        String  keyName       = node.SelectSingleNode("//q1:KeyName", xnm).InnerText;
                        String  name          = node.SelectSingleNode("//q1:Name", xnm).InnerText;
                        String  displayString = node.SelectSingleNode("//q1:DisplayString", xnm).InnerText;
                        Console.WriteLine("Policy:         " + name);
                        Console.WriteLine("Policy Setting: " + displayString);
                    }
                }
                else
                {
                    // Wyswietlenie polityki, ktora nie zawierala ustawienia
                    Console.WriteLine("\n #" + gpo.DisplayName + " - nie zawiera");
                }
            }

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }