public static ADServer PickGlobalCatalog(string configDCName) { ADServer adserver = DirectoryUtilities.DomainControllerFromName(configDCName); if (adserver != null && DirectoryUtilities.IsGlobalCatalog(adserver) && adserver.IsAvailable()) { return(adserver); } ADForest localForest = ADForest.GetLocalForest(); ADSite localSite = DirectoryUtilities.ConfigurationSession.GetLocalSite(); if (localSite == null) { throw new ADInitializationException(Strings.LocalSiteNotFound); } ReadOnlyCollection <ADServer> readOnlyCollection = localForest.FindAllGlobalCatalogs(); foreach (ADServer adserver2 in readOnlyCollection) { if (adserver2.ValidateRead().Length == 0 && adserver2.Site.Equals(localSite.Id) && adserver2.IsAvailable()) { return(adserver2); } } foreach (ADServer adserver3 in readOnlyCollection) { if (adserver3.ValidateRead().Length == 0 && adserver3.IsAvailable()) { return(adserver3); } } throw new ADInitializationException(Strings.NoGCsAvailableException(localForest.Fqdn)); }
private ADServer ValidateDC(string fqdn) { ADServer adserver = base.GlobalConfigSession.FindDCByFqdn(fqdn); if (adserver == null) { base.WriteError(new InvalidOperationException(Strings.ErrorDCNotFound(fqdn)), ErrorCategory.InvalidOperation, this.Identity); } if (!adserver.IsAvailable()) { base.WriteError(new InvalidOperationException(Strings.ErrorDCNotAvailable(fqdn)), ErrorCategory.InvalidOperation, this.Identity); } return(adserver); }
public static ADServer PickLocalDomainController() { ADServer adserver = DirectoryUtilities.DomainControllerFromName("localhost"); if (adserver != null && DirectoryUtilities.IsGlobalCatalog(adserver) && adserver.IsAvailable()) { return(adserver); } ADSite localSite = DirectoryUtilities.ConfigurationSession.GetLocalSite(); if (localSite == null) { throw new ADInitializationException(Strings.LocalSiteNotFound); } ADDomain addomain = ADForest.GetLocalForest().FindLocalDomain(); if (addomain == null) { throw new ADInitializationException(Strings.LocalDomainNotFoundException); } ReadOnlyCollection <ADServer> readOnlyCollection = addomain.FindAllDomainControllers(); foreach (ADServer adserver2 in readOnlyCollection) { if (adserver2.ValidateRead().Length == 0 && adserver2.Site.Equals(localSite.Id) && adserver2.IsAvailable() && DirectoryUtilities.IsGlobalCatalog(adserver2)) { return(adserver2); } } if (adserver != null) { return(adserver); } foreach (ADServer adserver3 in readOnlyCollection) { if (adserver3.ValidateRead().Length == 0 && adserver3.Site.Equals(localSite.Id) && adserver3.IsAvailable()) { return(adserver3); } } throw new ADInitializationException(Strings.NoDCsAvailableException(addomain.Name, localSite.Name)); }