示例#1
0
        public static System.DirectoryServices.ActiveDirectory.Domain Get_Domain(Args_Get_Domain args = null)
        {
            if (args == null)
            {
                args = new Args_Get_Domain();
            }

            if (args.Credential != null)
            {
                Logger.Write_Verbose("[Get-Domain] Using alternate credentials for Get-Domain");

                string TargetDomain;
                if (args.Domain.IsNotNullOrEmpty())
                {
                    TargetDomain = args.Domain;
                }
                else
                {
                    // if no domain is supplied, extract the logon domain from the PSCredential passed
                    TargetDomain = args.Credential.Domain;
                    Logger.Write_Verbose("[Get-Domain] Extracted domain '$TargetDomain' from -Credential");
                }

                var DomainContext = new System.DirectoryServices.ActiveDirectory.DirectoryContext(System.DirectoryServices.ActiveDirectory.DirectoryContextType.Domain,
                                                                                                  TargetDomain,
                                                                                                  args.Credential.UserName,
                                                                                                  args.Credential.Password);

                try
                {
                    return(System.DirectoryServices.ActiveDirectory.Domain.GetDomain(DomainContext));
                }
                catch (Exception e)
                {
                    Logger.Write_Verbose($"[Get-Domain] The specified domain '{TargetDomain}' does not exist, could not be contacted, there isn't an existing trust, or the specified credentials are invalid: {e}");
                }
            }
            else if (args.Domain.IsNotNullOrEmpty())
            {
                var DomainContext = new System.DirectoryServices.ActiveDirectory.DirectoryContext(System.DirectoryServices.ActiveDirectory.DirectoryContextType.Domain, args.Domain);
                try
                {
                    return(System.DirectoryServices.ActiveDirectory.Domain.GetDomain(DomainContext));
                }
                catch (Exception e)
                {
                    Logger.Write_Verbose($"[Get-Domain] The specified domain '{args.Domain}' does not exist, could not be contacted, or there isn't an existing trust : {e}");
                }
            }
            else
            {
                try
                {
                    return(System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain());
                }
                catch (ActiveDirectoryOperationException err)
                {
                    Logger.Write_Verbose($"[Get-Domain] Error retrieving the current domain, Maybe not in domain");
                }
                catch (Exception e)
                {
                    Logger.Write_Verbose($"[Get-Domain] Error retrieving the current domain: {e}");
                }
            }
            return(null);
        }
示例#2
0
 public static System.DirectoryServices.ActiveDirectory.Domain Get_NetDomain(Args_Get_Domain args = null)
 {
     return(GetNetDomain.Get_NetDomain(args));
 }