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!"); }
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); }