internal static ADOrganizationalUnit GetOUFromOrganizationId(OrganizationIdParameter organization, IConfigurationSession session, Task.TaskErrorLoggingDelegate errorLogger, bool reportError) { bool useConfigNC = session.UseConfigNC; ADOrganizationalUnit result = null; try { session.UseConfigNC = false; IEnumerable <ADOrganizationalUnit> objects = organization.GetObjects <ADOrganizationalUnit>(null, session); using (IEnumerator <ADOrganizationalUnit> enumerator = objects.GetEnumerator()) { if (enumerator.MoveNext()) { result = enumerator.Current; if (reportError && enumerator.MoveNext()) { errorLogger(new ManagementObjectAmbiguousException(Strings.ErrorOrganizationNotUnique(organization.ToString())), ErrorCategory.InvalidArgument, null); } } else if (reportError) { errorLogger(new ManagementObjectNotFoundException(Strings.ErrorOrganizationNotFound(organization.ToString())), ErrorCategory.InvalidArgument, null); } } } finally { session.UseConfigNC = useConfigNC; } return(result); }
internal static OrganizationId ResolveOrganization(Task task, OrganizationIdParameter organization, ADObjectId rootOrgContainerId, LocalizedString cannotResolveOrganizationMessage) { if (organization != null) { ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(rootOrgContainerId, task.CurrentOrganizationId, task.ExecutingUserOrganizationId, true); IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.RescopeToSubtree(sessionSettings), 371, "ResolveOrganization", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\OrganizationTaskHelper.cs"); tenantOrTopologyConfigurationSession.UseConfigNC = false; ADOrganizationalUnit oufromOrganizationId = OrganizationTaskHelper.GetOUFromOrganizationId(organization, tenantOrTopologyConfigurationSession, new Task.TaskErrorLoggingDelegate(task.WriteError), true); if (oufromOrganizationId == null) { task.WriteError(new ArgumentException(cannotResolveOrganizationMessage), ErrorCategory.InvalidOperation, null); return(null); } return(oufromOrganizationId.OrganizationId); } else { if (task.CurrentOrganizationId == OrganizationId.ForestWideOrgId) { task.WriteError(new ArgumentException(cannotResolveOrganizationMessage), ErrorCategory.InvalidOperation, null); return(null); } return(task.CurrentOrganizationId); } }
protected override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId) { if (this.publicFolderDataProvider != null) { this.publicFolderDataProvider.Dispose(); this.publicFolderDataProvider = null; } try { this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Remove-PublicFolder", Guid.Empty); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } return(this.publicFolderDataProvider); }
internal static OrganizationId ResolveOrganization(OrganizationIdParameter organization, OrganizationId currentOrganizationId, OrganizationId executingUserOrganizationId) { if (organization == null) { return(null); } ADObjectId rootOrgContainerIdForLocalForest = ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(); ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(rootOrgContainerIdForLocalForest, currentOrganizationId, executingUserOrganizationId, false); IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(null, true, ConsistencyMode.PartiallyConsistent, null, sessionSettings, ConfigScopes.TenantSubTree, 48, "ResolveOrganization", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\FfoReporting\\Common\\ADHelper.cs"); tenantOrTopologyConfigurationSession.UseConfigNC = false; ADOrganizationalUnit adorganizationalUnit = null; LocalizedString? localizedString = null; IEnumerable <ADOrganizationalUnit> objects = organization.GetObjects <ADOrganizationalUnit>(null, tenantOrTopologyConfigurationSession, null, out localizedString); using (IEnumerator <ADOrganizationalUnit> enumerator = objects.GetEnumerator()) { if (!enumerator.MoveNext()) { throw new ManagementObjectNotFoundException(Strings.ErrorOrganizationNotFound(organization.ToString())); } adorganizationalUnit = enumerator.Current; if (enumerator.MoveNext()) { throw new ManagementObjectAmbiguousException(Strings.ErrorOrganizationNotUnique(organization.ToString())); } } return(adorganizationalUnit.OrganizationId); }
internal static void SetAuditConfigurationRule(Workload workload, OrganizationIdParameter organizationId, MultiValuedProperty <AuditableOperations> auditOpsToSet, out IEnumerable <ErrorRecord> pipelineErrors) { Guid guid; if (!AuditPolicyUtility.GetRuleGuidFromWorkload(workload, out guid)) { pipelineErrors = new List <ErrorRecord>(); return; } Command command = new Command("Get-AuditConfigurationRule"); if (organizationId != null) { command.Parameters.Add("Organization", organizationId); } command.Parameters.Add("Identity", guid.ToString()); Command command2 = new Command("Set-AuditConfigurationRule"); command2.Parameters.Add("AuditOperation", auditOpsToSet); AuditConfigUtility.InvokeCommands(new List <Command> { command, command2 }, out pipelineErrors); }
public static void SetProperty(PswsCmdlet cmdlet, string propertyName, OrganizationIdParameter propertyValue) { if (propertyValue != null) { cmdlet.Parameters[propertyName] = propertyValue.ToString(); } }
internal static bool CanProceedWithOrganizationTask(OrganizationIdParameter orgIdParam, IConfigurationSession session, OrganizationStatus[] ignorableFlagsOnStatusTimeout, Task.TaskErrorLoggingDelegate errorLogger) { bool result = false; ExchangeConfigurationUnit exchangeConfigUnitFromOrganizationId = OrganizationTaskHelper.GetExchangeConfigUnitFromOrganizationId(orgIdParam, session, errorLogger, true); if (ExchangeConfigurationUnit.IsOrganizationActive(exchangeConfigUnitFromOrganizationId.OrganizationStatus)) { result = true; } else { DateTime?whenOrganizationStatusSet = exchangeConfigUnitFromOrganizationId.WhenOrganizationStatusSet; if (whenOrganizationStatusSet != null) { DateTime value = whenOrganizationStatusSet.Value.ToUniversalTime(); if (DateTime.UtcNow.Subtract(value) > OrganizationTaskHelper.organizationStatusTimeout && ignorableFlagsOnStatusTimeout != null) { foreach (OrganizationStatus organizationStatus in ignorableFlagsOnStatusTimeout) { if (organizationStatus == exchangeConfigUnitFromOrganizationId.OrganizationStatus) { result = true; break; } } } } } return(result); }
protected override OrganizationId ResolveCurrentOrganization() { if (MapiTaskHelper.IsDatacenter) { OrganizationIdParameter organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(base.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); return(MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId)); } return(base.CurrentOrganizationId ?? base.ExecutingUserOrganizationId); }
internal static string GetOrganizationName(OrganizationIdParameter organization) { string result = string.Empty; if (organization != null) { result = ((organization.InternalADObjectId != null) ? organization.InternalADObjectId.Name : organization.RawIdentity); } return(result); }
protected override void PopulateContextVariables() { base.PopulateContextVariables(); if (this.exchangeConfigUnit != null) { base.Fields["OrganizationHierarchicalPath"] = OrganizationIdParameter.GetHierarchicalIdentityFromDN(this.tenantOU.DistinguishedName); base.Fields["RemoveObjectsChunkSize"] = RegistryReader.Instance.GetValue <int>(Registry.LocalMachine, "SOFTWARE\\Microsoft\\ExchangeServer\\v15\\ProvisioningThrottling", "RemoveObjectsChunkSize", 100); base.Fields["RemoveObjectsChunkSleepTime"] = RegistryReader.Instance.GetValue <int>(Registry.LocalMachine, "SOFTWARE\\Microsoft\\ExchangeServer\\v15\\ProvisioningThrottling", "RemoveObjectsChunkSleepTime", 10); } }
private void OrganizationFromTask(object reportingObject, PropertyInfo property, object dalObject, object task) { Type type = task.GetType(); OrganizationIdParameter organizationIdParameter = type.GetProperty(this.dalPropertyName).GetValue(task, null) as OrganizationIdParameter; if (organizationIdParameter != null) { string value = (organizationIdParameter.InternalADObjectId != null) ? organizationIdParameter.InternalADObjectId.Name : organizationIdParameter.RawIdentity; property.SetValue(reportingObject, value, null); } }
protected override ADUser PrepareMailboxUser() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); base.Identity = PublicFolderPermissionTaskHelper.GetMailboxFolderIdParameterForPublicFolder(this.ConfigurationSession, this.Identity, Guid.Empty, null, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.WriteError)); return(base.PrepareMailboxUser()); }
public ExchangeTenantRecord(OrganizationIdParameter identity, SyncedPerimeterConfig config, IEnumerable <SyncedAcceptedDomain> acceptedDomains) { this.organization = identity; this.perimeterConfig = config; this.acceptedDomains = new Dictionary <string, SyncedAcceptedDomain>(); this.domains = new List <DomainSyncRecord>(); foreach (SyncedAcceptedDomain syncedAcceptedDomain in acceptedDomains) { DomainSyncRecord domainSyncRecord = new DomainSyncRecord(syncedAcceptedDomain); this.domains.Add(domainSyncRecord); this.acceptedDomains.Add(domainSyncRecord.Name, syncedAcceptedDomain); } }
private void CheckRoleAssignmentDefinition(RoleAssignmentDefinition roleAssignment) { if (roleAssignment.UseSafeRole) { if (!Datacenter.IsMicrosoftHostedOnly(false)) { Datacenter.IsDatacenterDedicated(false); } if (Datacenter.IsMicrosoftHostedOnly(false) || Datacenter.IsDatacenterDedicated(false)) { OrganizationIdParameter organization = this.Organization; } } }
protected override void PopulateContextVariables() { base.PopulateContextVariables(); string distinguishedName = this.tenantCU.OrganizationId.OrganizationalUnit.DistinguishedName; base.Fields["OrganizationHierarchicalPath"] = OrganizationIdParameter.GetHierarchicalIdentityFromDN(distinguishedName); base.Fields["TenantOrganizationDN"] = distinguishedName; base.Fields["TenantDomainName"] = this.tenantFQDN.DomainName.ToString(); base.Fields["TenantOrganizationObjectVersion"] = this.tenantCU.ObjectVersion; base.Fields["TenantName"] = this.tenantCU.OrganizationId.OrganizationalUnit.Name; base.Fields["IsCrossSKUMigration"] = this.IsCrossSKUMigration; base.Fields["IsBPOSLHydration"] = (!this.newServicePlanSettings.Organization.CommonHydrateableObjectsSharedEnabled && this.oldServicePlanSettings.Organization.CommonHydrateableObjectsSharedEnabled); base.Fields["IsBPOSSHydration"] = (!this.newServicePlanSettings.Organization.AdvancedHydrateableObjectsSharedEnabled && this.oldServicePlanSettings.Organization.AdvancedHydrateableObjectsSharedEnabled); }
internal void ValidateOrganization(PropertyInfo property, object task) { if (!(property.GetValue(task, null) is OrganizationIdParameter)) { Type type = task.GetType(); OrganizationId organizationId = type.GetProperty("CurrentOrganizationId", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).GetValue(task, null) as OrganizationId; if (organizationId == null || organizationId.OrganizationalUnit == null) { this.ThrowError(property); } OrganizationIdParameter value = new OrganizationIdParameter(organizationId.OrganizationalUnit.Name); property.SetValue(task, value, null); } }
private static bool TryGetEdgeSyncDiffRecord(OrganizationIdParameter organization, SyncedPerimeterConfig perimeterConfig, IList <string> exchangeIpAddresses, IList <string> ehfIpAddresses, string label, out EhfSyncDiffRecord <IList <string> > ehfSyncDiffRecord) { ehfSyncDiffRecord = null; IList <string> list = exchangeIpAddresses.Intersect(ehfIpAddresses).ToList <string>(); if (list.Count != exchangeIpAddresses.Count || exchangeIpAddresses.Count != ehfIpAddresses.Count) { IList <string> expectedObject = exchangeIpAddresses.Except(ehfIpAddresses).ToList <string>(); IList <string> actualObject = ehfIpAddresses.Except(exchangeIpAddresses).ToList <string>(); ehfSyncDiffRecord = new EhfSyncDiffRecord <IList <string> >(organization.RawIdentity, perimeterConfig.Identity, EhfSyncObjectType.PerimeterConfig, label, expectedObject, actualObject, list, perimeterConfig.SyncErrors); return(true); } return(false); }
protected override void PopulateContextVariables() { base.PopulateContextVariables(); if (this.tenantCU != null) { string distinguishedName = this.tenantCU.OrganizationId.OrganizationalUnit.DistinguishedName; base.Fields["TenantOrganizationDN"] = distinguishedName; base.Fields["OrganizationHierarchicalPath"] = OrganizationIdParameter.GetHierarchicalIdentityFromDN(distinguishedName); base.Fields["TenantOrganizationObjectVersion"] = this.tenantCU.ObjectVersion; base.Fields["TenantDomainName"] = this.tenantFQDN.DomainName.ToString(); base.Fields["TenantExternalDirectoryOrganizationId"] = this.tenantCU.ExternalDirectoryOrganizationId; base.Fields["Partition"] = ADAccountPartitionLocator.GetAccountPartitionGuidByPartitionId(new PartitionId(this.tenantCU.Id)); } }
internal static OrganizationId ResolveOrganizationId(OrganizationIdParameter tenantId) { if (tenantId == null) { throw new ArgumentNullException("tenantId"); } IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(true, ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 146, "ResolveOrganizationId", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\CompliancePolicy\\DarTasks\\GetDarTask.cs"); tenantOrTopologyConfigurationSession.UseConfigNC = false; ADOrganizationalUnit adorganizationalUnit = tenantId.GetObjects <ADOrganizationalUnit>(null, tenantOrTopologyConfigurationSession).FirstOrDefault <ADOrganizationalUnit>(); if (adorganizationalUnit == null) { throw new ArgumentException(Strings.ErrorOrganizationNotFound(tenantId.ToString())); } return(adorganizationalUnit.OrganizationId); }
protected sealed override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(this.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, base.RootOrgContainerId, base.CurrentOrganizationId, base.ExecutingUserOrganizationId); this.rootId = null; if ((this.Recurse.IsPresent || this.GetChildren.IsPresent) && this.Identity != null) { this.rootId = this.Identity.PublicFolderId; this.Identity = null; } if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId) { if (this.publicFolderDataProvider != null) { this.publicFolderDataProvider.Dispose(); this.publicFolderDataProvider = null; } Guid mailboxGuid = Guid.Empty; if (base.Fields.IsModified("Mailbox")) { ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client); this.VerifyIsPublicFolderMailbox(aduser); mailboxGuid = aduser.ExchangeGuid; } try { this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Get-PublicFolder", mailboxGuid); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } if (this.ResidentFolders.IsPresent) { this.contentMailboxGuid = this.publicFolderDataProvider.PublicFolderSession.MailboxGuid; this.inputFilter = new ComparisonFilter(ComparisonOperator.Equal, FolderSchema.ReplicaListBinary, this.contentMailboxGuid.ToByteArray()); } return(this.publicFolderDataProvider); }
protected override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId) { if (this.OverrideContentMailbox != null) { IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.DomainController, true, ConsistencyMode.PartiallyConsistent, null, base.SessionSettings, 337, "CreateSession", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\MapiTasks\\PublicFolder\\SetPublicFolder.cs"); ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.OverrideContentMailbox, tenantOrRootOrgRecipientSession, null, new LocalizedString?(Strings.ErrorMailboxNotFound(this.OverrideContentMailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxNotUnique(this.OverrideContentMailbox.ToString()))); if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new RecipientTaskException(Strings.ErrorInvalidContentMailbox(this.OverrideContentMailbox.ToString())), ErrorCategory.InvalidArgument, aduser); } if (TenantPublicFolderConfigurationCache.Instance.GetValue(base.CurrentOrganizationId).GetLocalMailboxRecipient(aduser.ExchangeGuid) == null) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(base.CurrentOrganizationId); } this.contentMailboxGuid = aduser.ExchangeGuid; } if (this.publicFolderDataProvider != null) { this.publicFolderDataProvider.Dispose(); this.publicFolderDataProvider = null; } try { this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Set-PublicFolder", Guid.Empty); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } return(this.publicFolderDataProvider); }
internal static OrganizationStatus SetOrganizationStatus(OrganizationIdParameter orgIdParam, IConfigurationSession session, OrganizationStatus statusToSet, Task.TaskErrorLoggingDelegate errorLogger) { ExchangeConfigurationUnit exchangeConfigUnitFromOrganizationId = OrganizationTaskHelper.GetExchangeConfigUnitFromOrganizationId(orgIdParam, session, errorLogger, true); OrganizationStatus organizationStatus = exchangeConfigUnitFromOrganizationId.OrganizationStatus; if (statusToSet != organizationStatus) { bool useConfigNC = session.UseConfigNC; try { session.UseConfigNC = true; exchangeConfigUnitFromOrganizationId.OrganizationStatus = statusToSet; session.Save(exchangeConfigUnitFromOrganizationId); } finally { session.UseConfigNC = useConfigNC; } } return(organizationStatus); }
internal static OWAExtensionDataProvider CreateOwaExtensionDataProvider(OrganizationIdParameter organizationIdParameter, IRecipientSession tenantGlobalCatalogSession, ADSessionSettings sessionSettings, bool isUserScope, ADUser adUser, string taskName, bool isDebugOn, Task.ErrorLoggerDelegate writeErrorDelegate) { OWAExtensionDataProvider result = null; LocalizedException ex = null; try { result = new OWAExtensionDataProvider((organizationIdParameter == null) ? null : organizationIdParameter.RawIdentity, tenantGlobalCatalogSession, sessionSettings, isUserScope, adUser, taskName, isDebugOn); } catch (StorageTransientException ex2) { ex = ex2; } catch (StoragePermanentException ex3) { ex = ex3; } if (ex != null) { writeErrorDelegate(ex, ExchangeErrorCategory.Client, adUser.Identity); } return(result); }
protected override ADUser PrepareMailboxUser() { OrganizationIdParameter organization = null; ADUser aduser = null; Guid publicFolderMailboxGuid = Guid.Empty; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (base.Fields.IsModified("Mailbox")) { aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client); if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, aduser); } publicFolderMailboxGuid = aduser.ExchangeGuid; } base.Identity = PublicFolderPermissionTaskHelper.GetMailboxFolderIdParameterForPublicFolder(this.ConfigurationSession, this.Identity, publicFolderMailboxGuid, aduser, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.WriteError)); return(base.PrepareMailboxUser()); }
protected sealed override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(this.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (this.publicFolderStatisticsDataProvider == null || base.CurrentOrganizationId != this.publicFolderStatisticsDataProvider.CurrentOrganizationId) { if (this.publicFolderStatisticsDataProvider != null) { this.publicFolderStatisticsDataProvider.Dispose(); this.publicFolderStatisticsDataProvider = null; } Guid mailboxGuid = Guid.Empty; if (base.Fields.IsModified("MailboxInformation")) { ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client); if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, aduser); } mailboxGuid = aduser.ExchangeGuid; } try { this.publicFolderStatisticsDataProvider = new PublicFolderStatisticsDataProvider(this.ConfigurationSession, "Get-PublicFolderStatistics", mailboxGuid); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } return(this.publicFolderStatisticsDataProvider); }
protected override ADServerSettings GetCmdletADServerSettings() { PropertyBag fields = base.CurrentTaskContext.InvocationInfo.Fields; SwitchParameter switchParameter = fields.Contains("IsDatacenter") ? ((SwitchParameter)fields["IsDatacenter"]) : new SwitchParameter(false); bool flag = fields.Contains("DomainController"); OrganizationIdParameter organizationIdParameter = (OrganizationIdParameter)fields["PrimaryOrganization"]; PartitionId partitionId = (organizationIdParameter != null) ? ADAccountPartitionLocator.GetPartitionIdByAcceptedDomainName(organizationIdParameter.RawIdentity) : null; string value = null; ADServerSettings serverSettings = ExchangePropertyContainer.GetServerSettings(base.CurrentTaskContext.SessionState); if (serverSettings != null && partitionId != null) { value = serverSettings.PreferredGlobalCatalog(partitionId.ForestFQDN); } if (switchParameter && organizationIdParameter != null && string.IsNullOrEmpty(value) && partitionId != null && !flag) { if (this.domainBasedADServerSettings == null) { this.domainBasedADServerSettings = RunspaceServerSettings.CreateGcOnlyRunspaceServerSettings(organizationIdParameter.RawIdentity.ToLowerInvariant(), partitionId.ForestFQDN, false); } return(this.domainBasedADServerSettings); } return(base.GetCmdletADServerSettings()); }
internal static void CalculateRoleConfigurationForCurrentSKU(OrganizationIdParameter organization, out RoleDefinition[] roles, out RoleNameMappingCollection nameMapping, out string[] rolesToRemove, out RoleEntry[] allAllowedRoleEntriesForSKU) { InstallCannedRbacRoles.CalculateRoleConfigurationForCurrentSKU(organization, null, out roles, out nameMapping, out rolesToRemove, out allAllowedRoleEntriesForSKU); }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); try { if (base.ParameterSetName.Equals("Identity")) { TIdentity identity = this.Identity; if (identity.OrganizationId != null) { IDirectorySession dataSession = this.recipSession; TIdentity identity2 = this.Identity; if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(dataSession, identity2.OrganizationId)) { IDirectorySession session = this.recipSession; TIdentity identity3 = this.Identity; this.recipSession = (IRecipientSession)TaskHelper.UnderscopeSessionToOrganization(session, identity3.OrganizationId, true); } IDirectorySession dataSession2 = this.currentOrgConfigSession; TIdentity identity4 = this.Identity; if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(dataSession2, identity4.OrganizationId)) { IDirectorySession session2 = this.currentOrgConfigSession; TIdentity identity5 = this.Identity; this.currentOrgConfigSession = (ITenantConfigurationSession)TaskHelper.UnderscopeSessionToOrganization(session2, identity5.OrganizationId, true); this.rjProvider.IndexProvider.ConfigSession = this.currentOrgConfigSession; } } ADUser aduser = null; TIdentity identity6 = this.Identity; if (!string.IsNullOrEmpty(identity6.MailboxName)) { IRecipientSession dataSession3 = this.recipSession; IRecipientSession globalCatalogSession = this.gcSession; ADServerSettings serverSettings = base.ServerSettings; TIdentity identity7 = this.Identity; aduser = RequestTaskHelper.ResolveADUser(dataSession3, globalCatalogSession, serverSettings, new MailboxOrMailUserIdParameter(identity7.MailboxName), base.OptionalIdentityData, this.DomainController, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError), false); if (aduser != null) { TIdentity identity8 = this.Identity; identity8.MailboxId = aduser.Id; if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.recipSession, aduser)) { this.recipSession = (IRecipientSession)TaskHelper.UnderscopeSessionToOrganization(this.recipSession, aduser.OrganizationId, true); } if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.currentOrgConfigSession, aduser)) { this.currentOrgConfigSession = (ITenantConfigurationSession)TaskHelper.UnderscopeSessionToOrganization(this.currentOrgConfigSession, aduser.OrganizationId, true); this.rjProvider.IndexProvider.ConfigSession = this.currentOrgConfigSession; } } } TIdentity identity9 = this.Identity; if (!string.IsNullOrEmpty(identity9.OrganizationName)) { IConfigurationSession configurationSession = RequestTaskHelper.CreateOrganizationFindingSession(base.CurrentOrganizationId, base.ExecutingUserOrganizationId); TIdentity identity10 = this.Identity; IIdentityParameter id = new OrganizationIdParameter(identity10.OrganizationName); IConfigDataProvider session3 = configurationSession; ObjectId rootID = null; TIdentity identity11 = this.Identity; LocalizedString? notFoundError = new LocalizedString?(Strings.ErrorOrganizationNotFound(identity11.OrganizationName)); TIdentity identity12 = this.Identity; ADOrganizationalUnit adorganizationalUnit = (ADOrganizationalUnit)base.GetDataObject <ADOrganizationalUnit>(id, session3, rootID, notFoundError, new LocalizedString?(Strings.ErrorOrganizationNotUnique(identity12.OrganizationName))); if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.recipSession, adorganizationalUnit)) { this.recipSession = (IRecipientSession)TaskHelper.UnderscopeSessionToOrganization(this.recipSession, adorganizationalUnit.OrganizationId, true); } if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.currentOrgConfigSession, adorganizationalUnit)) { this.currentOrgConfigSession = (ITenantConfigurationSession)TaskHelper.UnderscopeSessionToOrganization(this.currentOrgConfigSession, adorganizationalUnit.OrganizationId, true); this.rjProvider.IndexProvider.ConfigSession = this.currentOrgConfigSession; } } TIdentity identity13 = this.Identity; identity13.SetDefaultIndex(this.DefaultRequestIndexId); IRequestIndexEntry entry = this.GetEntry(); RequestJobObjectId requestJobId = entry.GetRequestJobId(); if (entry.TargetUserId != null) { if (aduser != null && aduser.Id.Equals(entry.TargetUserId)) { requestJobId.TargetUser = aduser; } else { requestJobId.TargetUser = RequestTaskHelper.ResolveADUser(this.recipSession, this.gcSession, base.ServerSettings, new MailboxOrMailUserIdParameter(entry.TargetUserId), base.OptionalIdentityData, this.DomainController, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError), false); } } if (entry.SourceUserId != null) { if (aduser != null && aduser.Id.Equals(entry.SourceUserId)) { requestJobId.SourceUser = aduser; } else { requestJobId.SourceUser = RequestTaskHelper.ResolveADUser(this.recipSession, this.gcSession, base.ServerSettings, new MailboxOrMailUserIdParameter(entry.SourceUserId), base.OptionalIdentityData, this.DomainController, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError), false); } } this.CheckIndexEntry(entry); TDataObject tdataObject = (TDataObject)((object)this.rjProvider.Read <TDataObject>(requestJobId)); if (tdataObject == null || tdataObject.Status == RequestStatus.None) { TIdentity identity14 = this.Identity; base.WriteError(new ManagementObjectNotFoundException(Strings.ErrorCouldNotFindRequest(identity14.ToString())), ErrorCategory.InvalidArgument, this.Identity); } else if (tdataObject.RequestType != this.RequestType) { base.WriteError(new ManagementObjectNotFoundException(Strings.ErrorNotEnoughInformationToFindRequest), ErrorCategory.InvalidArgument, this.Identity); } else { this.WriteResult(tdataObject); } } else if (base.ParameterSetName.Equals("MigrationRequestQueue")) { if (this.RequestQueue != null) { MailboxDatabase mailboxDatabase = (MailboxDatabase)base.GetDataObject <MailboxDatabase>(this.RequestQueue, this.configSession, null, new LocalizedString?(Strings.ErrorMailboxDatabaseNotFound(this.RequestQueue.ToString())), new LocalizedString?(Strings.ErrorMailboxDatabaseNotUnique(this.RequestQueue.ToString()))); this.fromMdb = mailboxDatabase.Id; } this.rjProvider.AllowInvalid = true; base.InternalProcessRecord(); } } finally { TaskLogger.LogExit(); } }
internal static void CalculateRoleConfigurationForCurrentSKU(OrganizationIdParameter organization, ServicePlan servicePlanSettings, out RoleDefinition[] roles, out RoleNameMappingCollection nameMapping, out string[] rolesToRemove, out RoleEntry[] allAllowedRoleEntriesForSKU) { if (InstallCannedRbacRoles.isFfoEnvironment) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedEOPRoles_Datacenter.Definition, CannedWebServiceRoles_Datacenter.Definition); roles = InstallCannedRbacRoles.MergeRoleDefinitions(roles, CannedUCCRoles_Datacenter.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingDatacenterR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesDatacenter; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableEOPRoleEntries_Datacenter.RoleEntries, AvailableWebServiceRoleEntries_Datacenter.RoleEntries, AvailableUCCRoleEntries_Datacenter.RoleEntries); return; } if (organization == null) { if (Datacenter.IsMicrosoftHostedOnly(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Datacenter.Definition, CannedWebServiceRoles_Datacenter.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingDatacenterR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesDatacenter; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Datacenter.RoleEntries, AvailableWebServiceRoleEntries_Datacenter.RoleEntries, null); return; } if (Datacenter.IsPartnerHostedOnly(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Hosting.Definition, CannedWebServiceRoles_Hosting.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingHostingR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesHosting; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Hosting.RoleEntries, AvailableWebServiceRoleEntries_Hosting.RoleEntries, null); return; } if (Datacenter.IsDatacenterDedicated(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Dedicated.Definition, CannedWebServiceRoles_Dedicated.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingEnterpriseR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesEnterprise; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Dedicated.RoleEntries, AvailableWebServiceRoleEntries_Dedicated.RoleEntries, null); return; } roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Enterprise.Definition, CannedWebServiceRoles_Enterprise.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingEnterpriseR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesEnterprise; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Enterprise.RoleEntries, AvailableWebServiceRoleEntries_Enterprise.RoleEntries, null); return; } else { if (Datacenter.IsPartnerHostedOnly(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_HostedTenant.Definition, CannedWebServiceRoles_HostedTenant.Definition); rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesHostedTenant; if (servicePlanSettings != null) { List <string> enabledRoleGroupRoleAssignmentFeatures = servicePlanSettings.Organization.GetEnabledRoleGroupRoleAssignmentFeatures(); RoleGroupRoleMapping[] definition = HostedTenant_RoleGroupDefinition.Definition; List <string> a; roles = InstallCannedRbacRoles.FilterOrgRolesByRoleGroupFilters(roles, enabledRoleGroupRoleAssignmentFeatures, definition, out a); rolesToRemove = InstallCannedRbacRoles.AppendIListToarray <string>(rolesToRemove, a); } nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingHostedTenantR4; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_HostedTenant.RoleEntries, AvailableWebServiceRoleEntries_HostedTenant.RoleEntries, null); return; } roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Tenant.Definition, CannedWebServiceRoles_Tenant.Definition); rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesTenant; if (servicePlanSettings != null) { List <string> enabledRoleGroupRoleAssignmentFeatures2 = servicePlanSettings.Organization.GetEnabledRoleGroupRoleAssignmentFeatures(); RoleGroupRoleMapping[] definition2 = Tenant_RoleGroupDefinition.Definition; List <string> a2; roles = InstallCannedRbacRoles.FilterOrgRolesByRoleGroupFilters(roles, enabledRoleGroupRoleAssignmentFeatures2, definition2, out a2); rolesToRemove = InstallCannedRbacRoles.AppendIListToarray <string>(rolesToRemove, a2); } nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingTenantR4; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Tenant.RoleEntries, AvailableWebServiceRoleEntries_Tenant.RoleEntries, null); return; } }
internal static Guid GetExternalDirectoryOrganizationId(OrganizationIdParameter organization, OrganizationId currentOrganizationId, OrganizationId executingUserOrganizationId) { OrganizationId organizationId = ADHelper.ResolveOrganization(organization, currentOrganizationId, executingUserOrganizationId); return(ADHelper.GetExternalDirectoryOrganizationId(organizationId)); }