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); }
public static System.DirectoryServices.ActiveDirectory.Domain Get_NetDomain(Args_Get_Domain args = null) { return(GetNetDomain.Get_NetDomain(args)); }