public override void Run(Dictionary <String, Parameter> RunParams) { Domain.DomainSearcher domainSearcher = new Domain.DomainSearcher(); List <string> Computers = null; if (RunParams.TryGetValue("ComputerName", out Parameter computername)) { Computers = computername.Value; } List <Domain.DomainObject> domainComputers = domainSearcher.GetDomainComputers(Computers); foreach (Domain.DomainObject computer in domainComputers) { Printing.TableHeader("Property", "Value"); Printing.TableItem("Name", computer.name); Printing.TableItem("DistinguishedName", computer.distinguishedname); if (computer.serviceprincipalname.Length > 0) { string[] SPNs = computer.serviceprincipalname.Split(' '); foreach (string spn in SPNs) { Printing.TableItem("Service Principal Name", spn.TrimEnd(',')); } } } }
public static string Execute() { try { var scHandle = IntPtr.Zero; Domain.DomainSearcher searcher = new Domain.DomainSearcher(); List <Domain.DomainObject> computerList = searcher.GetDomainComputers(); List <string> adminFound = new List <string>(); foreach (Domain.DomainObject computer in computerList) { string computerName = computer.name; scHandle = Win32.Advapi32.OpenSCManager(computerName, null, Win32.Advapi32.SCM_ACCESS.SC_MANAGER_ALL_ACCESS); if (scHandle.ToInt32() != 0) { adminFound.Add(computer.distinguishedname); } Win32.Advapi32.CloseServiceHandle(scHandle); } if (adminFound.Count() == 0) { return("No admin access found."); } else { string result = string.Join(",", adminFound.ToArray()); return(result); } } catch (Exception e) { return(e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace); } }
public void TestGetComputers() { Domain.DomainSearcher searcher = new Domain.DomainSearcher(); IList <Domain.DomainObject> computers = searcher.GetDomainComputers(); foreach (Domain.DomainObject computer in computers) { Assert.IsTrue(computer.distinguishedname.ToLower().Contains(Environment.UserDomainName.ToLower())); } }