コード例 #1
0
        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(','));
                    }
                }
            }
        }
コード例 #2
0
    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); }
    }
コード例 #3
0
        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()));
            }
        }