protected PowerShellResults <L> SetObject <O, U, L>(string setCmdlet, Identity identity, U properties, Identity identityForGetCmdlet) where O : L where U : SetObjectProperties
        {
            EcpPerfCounters.WebServiceSetObject.Increment();
            identity.FaultIfNull();
            properties.FaultIfNull();
            PowerShellResults <L> powerShellResults = new PowerShellResults <L>();

            properties.IgnoreNullOrEmpty = false;
            if (properties.Any <KeyValuePair <string, object> >())
            {
                powerShellResults = this.CoreInvoke <L>(new PSCommand().AddCommand(setCmdlet), identity.ToPipelineInput(), identity, properties);
            }
            if (powerShellResults.Succeeded && null != identityForGetCmdlet)
            {
                PowerShellResults <L> powerShellResults2 = null;
                if (properties.ReturnObjectType == ReturnObjectTypes.Full && this is IGetObjectService <O> )
                {
                    IGetObjectService <O> getObjectService = this as IGetObjectService <O>;
                    PowerShellResults <O> @object          = getObjectService.GetObject(identityForGetCmdlet);
                    powerShellResults2 = new PowerShellResults <L>();
                    powerShellResults2.MergeOutput(@object.Output.Cast <L>().ToArray <L>());
                    powerShellResults2.MergeErrors <O>(@object);
                }
                else if (properties.ReturnObjectType == ReturnObjectTypes.PartialForList && this is IGetObjectForListService <L> )
                {
                    IGetObjectForListService <L> getObjectForListService = this as IGetObjectForListService <L>;
                    powerShellResults2 = getObjectForListService.GetObjectForList(identityForGetCmdlet);
                }
                if (powerShellResults2 != null)
                {
                    powerShellResults.MergeAll(powerShellResults2);
                }
            }
            return(powerShellResults);
        }
Exemple #2
0
        public PowerShellResults <EndUserRoleRow> GetAssignedEndUserRoles(RoleAssignmentPolicyFilter filter, SortOptions sort)
        {
            PowerShellResults <RoleAssignmentPolicy> @object           = this.GetObject(filter.Policy);
            PowerShellResults <EndUserRoleRow>       powerShellResults = new PowerShellResults <EndUserRoleRow>
            {
                ErrorRecords = @object.ErrorRecords,
                Warnings     = @object.Warnings
            };

            if (@object.SucceededWithValue)
            {
                EndUserRoles endUserRoles = new EndUserRoles();
                powerShellResults.MergeAll(endUserRoles.GetList(null, null));
                if (powerShellResults.Succeeded)
                {
                    List <EndUserRoleRow> list = new List <EndUserRoleRow>();
                    foreach (EndUserRoleRow endUserRoleRow in powerShellResults.Output)
                    {
                        if (@object.Value.AssignedEndUserRoles.Contains(endUserRoleRow.Identity))
                        {
                            list.Add(endUserRoleRow);
                        }
                    }
                    powerShellResults.Output = list.ToArray();
                }
            }
            return(powerShellResults);
        }
Exemple #3
0
        public PowerShellResults <GetVoiceMailConfiguration> SetObject(Identity identity, SetVoiceMailConfiguration properties)
        {
            properties.FaultIfNull();
            identity = Identity.FromExecutingUserId();
            PowerShellResults <GetVoiceMailConfiguration> powerShellResults = new PowerShellResults <GetVoiceMailConfiguration>();
            PowerShellResults <GetVoiceMailConfiguration> @object           = this.GetObject(identity);

            powerShellResults.MergeErrors <GetVoiceMailConfiguration>(@object);
            if (powerShellResults.Failed)
            {
                return(powerShellResults);
            }
            powerShellResults.MergeErrors <UMMailboxPin>(base.SetObject <UMMailboxPin, SetVoiceMailPIN>("Set-UMMailboxPIN", identity, properties.SetVoiceMailPIN));
            if (powerShellResults.Failed)
            {
                return(powerShellResults);
            }
            properties.ReturnObjectType = ReturnObjectTypes.Full;
            powerShellResults.MergeAll(base.SetObject <GetVoiceMailConfiguration, SetVoiceMailConfiguration>("Set-UMMailbox", identity, properties));
            if (powerShellResults.SucceededWithValue)
            {
                GetVoiceMailConfiguration value = powerShellResults.Value;
                RbacPrincipal.Current.RbacConfiguration.ExecutingUserIsUmConfigured = value.IsConfigured;
                if (this.IsPhoneVerified(value.PhoneNumber, value) && !string.IsNullOrEmpty(properties.PhoneProviderId))
                {
                    PowerShellResults <SmsOptions> results = this.SetTextMessagingAccount(identity, value.PhoneNumber, value.PhoneProviderId, value);
                    powerShellResults.MergeErrors <SmsOptions>(results);
                }
            }
            return(powerShellResults);
        }
        public PowerShellResults <JournalReportNdrTo> SetObject(Identity identity, SetJournalReportNdrTo properties)
        {
            PowerShellResults <JournalReportNdrTo> powerShellResults = new PowerShellResults <JournalReportNdrTo>();

            properties.IgnoreNullOrEmpty = false;
            if (properties.Any <KeyValuePair <string, object> >())
            {
                PSCommand psCommand = new PSCommand().AddCommand("Set-TransportConfig");
                psCommand.AddParameters(properties);
                PowerShellResults <JournalReportNdrTo> results = base.Invoke <JournalReportNdrTo>(psCommand);
                powerShellResults.MergeAll(results);
            }
            if (powerShellResults.Succeeded)
            {
                powerShellResults.MergeAll(this.GetObject(identity));
            }
            return(powerShellResults);
        }
        public PowerShellResults <SchedulingOptionsConfiguration> SetObject(Identity identity, SetSchedulingOptionsConfiguration properties)
        {
            properties.FaultIfNull();
            PowerShellResults <SchedulingOptionsConfiguration> powerShellResults = new PowerShellResults <SchedulingOptionsConfiguration>();

            powerShellResults.MergeErrors <CalendarConfiguration>(base.SetObject <CalendarConfiguration, SetMailboxCalendarConfiguration>("Set-MailboxCalendarConfiguration", Identity.FromExecutingUserId(), properties.SetMailboxCalendarConfiguration));
            if (powerShellResults.Failed)
            {
                return(powerShellResults);
            }
            powerShellResults.MergeAll(base.SetObject <SchedulingOptionsConfiguration, SetSchedulingOptionsConfiguration>(identity, properties));
            return(powerShellResults);
        }
Exemple #6
0
        public PowerShellResults <SupervisionStatus> SetObject(Identity identity, SetSupervisionStatus properties)
        {
            identity = Identity.FromExecutingUserId();
            properties.FaultIfNull();
            PowerShellResults <SupervisionStatus> powerShellResults = new PowerShellResults <SupervisionStatus>();

            powerShellResults.MergeErrors <SupervisionStatus>(base.SetObject <SupervisionStatus, SetSupervisionStatus>("Set-SupervisionPolicy", identity, properties));
            if (powerShellResults.Failed)
            {
                return(powerShellResults);
            }
            powerShellResults.MergeAll(base.SetObject <SupervisionStatus, SetClosedCampusOutboundPolicyConfiguration>("Set-SupervisionPolicy", identity, properties.MyClosedCampusOutboundPolicyConfiguration));
            return(powerShellResults);
        }
        protected PowerShellResults <O> InvokeAndGetObject <O>(PSCommand psCommand, Identity[] identities, WebServiceParameters parameters) where O : BaseRow
        {
            PowerShellResults <O> powerShellResults = new PowerShellResults <O>();

            powerShellResults.MergeErrors(this.Invoke(psCommand, identities, parameters));
            if (powerShellResults.Succeeded && identities.Length <= 5)
            {
                IGetObjectForListService <O>            getObjectForListService = this as IGetObjectForListService <O>;
                Func <Identity, PowerShellResults <O> > func;
                if (getObjectForListService != null)
                {
                    func = ((Identity x) => getObjectForListService.GetObjectForList(x));
                }
                else
                {
                    IGetObjectService <O> getObjectService = this as IGetObjectService <O>;
                    if (getObjectService == null)
                    {
                        throw new Exception("Either IGetObjectForListService or IGetObjectService must be implemented for single row refresh.");
                    }
                    func = ((Identity x) => getObjectService.GetObject(x));
                }
                PowerShellResults <O> powerShellResults2 = new PowerShellResults <O>();
                try
                {
                    for (int i = 0; i < identities.Length; i++)
                    {
                        powerShellResults2.MergeAll(func(identities[i]));
                        if (powerShellResults2.Failed)
                        {
                            break;
                        }
                    }
                }
                catch (SecurityException)
                {
                    if (powerShellResults2.HasValue)
                    {
                        throw;
                    }
                }
                if (powerShellResults2.SucceededWithValue)
                {
                    powerShellResults.MergeAll(powerShellResults2);
                }
            }
            return(powerShellResults);
        }
        public PowerShellResults <ActiveSyncSettings> SetObject(Identity identity, SetActiveSyncSettings properties)
        {
            properties.FaultIfNull();
            properties.IgnoreNullOrEmpty = false;
            PowerShellResults <ActiveSyncSettings> powerShellResults = base.Invoke <ActiveSyncSettings>(new PSCommand().AddCommand("Set-ActiveSyncOrganizationSettings").AddParameters(properties));

            if (powerShellResults.Succeeded)
            {
                PowerShellResults <ActiveSyncSettings> @object = this.GetObject(null);
                if (@object != null)
                {
                    powerShellResults.MergeAll(@object);
                }
            }
            return(powerShellResults);
        }
Exemple #9
0
        private PowerShellResults <SmsOptions> SetTextMessagingAccount(Identity identity, string phoneNumber, string phoneProviderId, GetVoiceMailConfiguration voiceMailConfig)
        {
            SetSmsOptions setSmsOptions = new SetSmsOptions();

            setSmsOptions.CountryCode             = "+" + voiceMailConfig.CountryOrRegionCode;
            setSmsOptions.CountryRegionId         = voiceMailConfig.CountryOrRegionId;
            setSmsOptions.MobileOperatorId        = phoneProviderId;
            setSmsOptions.NotificationPhoneNumber = setSmsOptions.CountryCode + phoneNumber;
            setSmsOptions.VerificationCode        = null;
            PowerShellResults <SmsOptions> powerShellResults = new PowerShellResults <SmsOptions>();
            PowerShellResults results = base.SetObject <SmsOptions, SetSmsOptions>("Set-TextMessagingAccount", identity, setSmsOptions);

            powerShellResults.MergeErrors(results);
            if (powerShellResults.Succeeded)
            {
                powerShellResults.MergeAll(base.GetObject <SmsOptions>("Get-TextMessagingAccount", identity));
            }
            return(powerShellResults);
        }
Exemple #10
0
        public PowerShellResults <MailboxRecipientRow> SetObject(Identity identity, SetAccount properties)
        {
            PowerShellResults <MailboxRecipientRow> powerShellResults = new PowerShellResults <MailboxRecipientRow>();
            bool flag = identity == null || StringComparer.OrdinalIgnoreCase.Equals(identity.RawIdentity, Identity.FromExecutingUserId().RawIdentity);

            identity = (identity ?? Identity.FromExecutingUserId());
            properties.FaultIfNull();
            if (properties.SetMailbox.EmailAddresses != null || properties.SetMailbox.MailTip != null || properties.SetMailbox.RoleAssignmentPolicy != null || properties.SetMailbox.RetentionPolicy != null || properties.SetMailbox.MailboxPlan != null || properties.SetMailbox.ResourceCapacity != null || properties.SetMailbox.LitigationHoldEnabled != null || properties.SetMailbox.RetentionComment != null || properties.SetMailbox.RetentionUrl != null)
            {
                if (properties.SetMailbox.EmailAddresses != null)
                {
                    PowerShellResults <Account> @object = base.GetObject <Account>("Get-Mailbox", identity);
                    powerShellResults.MergeErrors <Account>(@object);
                    if (@object.HasValue)
                    {
                        properties.SetMailbox.UpdateEmailAddresses(@object.Output[0].Mailbox);
                    }
                }
                if (properties.SetMailbox.ResourceCapacity != null && string.IsNullOrEmpty(properties.SetMailbox.ResourceCapacity))
                {
                    properties.SetMailbox.ResourceCapacity = null;
                }
                if (properties.SetMailbox.RetentionPolicy != null && string.IsNullOrEmpty(properties.SetMailbox.RetentionPolicy))
                {
                    properties.SetMailbox.RetentionPolicy = null;
                }
                powerShellResults.MergeErrors <Mailbox>(base.SetObject <Mailbox, SetMailbox>("Set-Mailbox", identity, properties.SetMailbox));
                if (powerShellResults.Failed)
                {
                    return(powerShellResults);
                }
            }
            bool flag2 = RbacPrincipal.Current.IsInRole("Get-User?Identity@R:Organization+Get-Mailbox?Identity@R:Organization+Add-SupervisionListEntry?Identity@W:Organization+Remove-SupervisionListEntry?Identity@W:Organization") || RbacPrincipal.Current.IsInRole("Get-User?Identity@R:Organization+Get-Mailbox?Identity@R:Organization+Add-SupervisionListEntry?Identity@W:Self+Remove-SupervisionListEntry?Identity@W:Self");

            if (flag2)
            {
                powerShellResults = this.UpdateSupervisionBlockAllowLists(identity, properties, powerShellResults);
                if (powerShellResults.Failed)
                {
                    return(powerShellResults);
                }
            }
            powerShellResults.MergeAll(base.SetObject <Account, SetAccount, MailboxRecipientRow>("Set-User", identity, properties));
            if (powerShellResults.SucceededWithValue && powerShellResults.Value.IsRoom)
            {
                properties.SetCalendarProcessing.UpdateResourceObjects();
                if (properties.AutomaticBooking != null || properties.ResourceDelegates != null)
                {
                    powerShellResults.MergeErrors <CalendarConfiguration>(base.SetObject <CalendarConfiguration, SetCalendarProcessing>("Set-CalendarProcessing", identity, properties.SetCalendarProcessing));
                }
            }
            if (properties.EnableUM != null && properties.EnableUM == false)
            {
                powerShellResults.MergeErrors(new UMMailboxService().RemoveObjects(new Identity[]
                {
                    identity
                }, null));
            }
            if (properties.EnableLitigationHold != null && properties.EnableLitigationHold == false)
            {
                PSCommand pscommand = new PSCommand();
                pscommand.AddCommand("Set-Mailbox");
                pscommand.AddParameter("Identity", identity);
                pscommand.AddParameter("LitigationHoldEnabled", false);
                powerShellResults.MergeErrors <Mailbox>(base.Invoke <Mailbox>(pscommand));
            }
            if (RbacPrincipal.Current.IsInRole("Set-CasMailbox?Identity@W:Self|Organization"))
            {
                powerShellResults.MergeErrors <CASMailbox>(base.SetObject <CASMailbox, SetCasMailbox>("Set-CasMailbox", identity, properties.SetCasMailbox));
            }
            if (flag && powerShellResults.SucceededWithValue)
            {
                RbacPrincipal.Current.Name = powerShellResults.Value.DisplayName;
            }
            return(powerShellResults);
        }
Exemple #11
0
        protected PowerShellResults <DistributionGroupRow> SetDistributionGroup <T, S, U>(Identity identity, T properties) where T : SetDistributionGroupBase <S, U> where S : SetGroupBase, new() where U : UpdateDistributionGroupMemberBase, new()
        {
            PowerShellResults <DistributionGroupRow> powerShellResults = new PowerShellResults <DistributionGroupRow>();

            identity.FaultIfNull();
            properties.FaultIfNull();
            powerShellResults.MergeErrors <WindowsGroup>(base.SetObject <WindowsGroup, SetGroupBase>("Set-Group", identity, properties.SetGroup));
            if (powerShellResults.Failed)
            {
                return(powerShellResults);
            }
            U updateDistributionGroupMember = properties.UpdateDistributionGroupMember;

            if (updateDistributionGroupMember.Members != null)
            {
                U updateDistributionGroupMember2 = properties.UpdateDistributionGroupMember;
                updateDistributionGroupMember2.IgnoreNullOrEmpty = false;
                powerShellResults.MergeErrors(base.Invoke(new PSCommand().AddCommand("Update-DistributionGroupMember"), new Identity[]
                {
                    identity
                }, properties.UpdateDistributionGroupMember));
                if (powerShellResults.Failed)
                {
                    return(powerShellResults);
                }
            }
            if (RbacPrincipal.Current.IsInRole("Enterprise"))
            {
                if (properties.SendAsPermissionsEnterprise != null && !properties.SendAsPermissionsEnterprise.Added.IsNullOrEmpty())
                {
                    powerShellResults.MergeErrors(this.UpdateEnterpriseSendAsPermissions("Add-ADPermission", properties.SendAsPermissionsEnterprise.Added, new AddSendAsPermission
                    {
                        Identity = identity.RawIdentity
                    }));
                    if (powerShellResults.Failed)
                    {
                        return(powerShellResults);
                    }
                }
                if (properties.SendAsPermissionsEnterprise != null && !properties.SendAsPermissionsEnterprise.Removed.IsNullOrEmpty())
                {
                    powerShellResults.MergeErrors(this.UpdateEnterpriseSendAsPermissions("Remove-ADPermission", properties.SendAsPermissionsEnterprise.Removed, new RemoveSendAsPermission
                    {
                        Identity = identity.RawIdentity
                    }));
                    if (powerShellResults.Failed)
                    {
                        return(powerShellResults);
                    }
                }
            }
            else if (RbacPrincipal.Current.IsInRole("MultiTenant"))
            {
                if (properties.SendAsPermissionsCloud != null && !properties.SendAsPermissionsCloud.Added.IsNullOrEmpty())
                {
                    powerShellResults.MergeErrors(this.UpdateCloudSendAsPermissions("Add-RecipientPermission", properties.SendAsPermissionsCloud.Added, new AddCloudSendAsPermission
                    {
                        Identity = identity.RawIdentity
                    }));
                    if (powerShellResults.Failed)
                    {
                        return(powerShellResults);
                    }
                }
                if (properties.SendAsPermissionsCloud != null && !properties.SendAsPermissionsCloud.Removed.IsNullOrEmpty())
                {
                    powerShellResults.MergeErrors(this.UpdateCloudSendAsPermissions("Remove-RecipientPermission", properties.SendAsPermissionsCloud.Removed, new AddCloudSendAsPermission
                    {
                        Identity = identity.RawIdentity
                    }));
                    if (powerShellResults.Failed)
                    {
                        return(powerShellResults);
                    }
                }
            }
            powerShellResults.MergeAll(base.SetObject <DistributionGroup, T, DistributionGroupRow>("Set-DistributionGroup", identity, properties));
            return(powerShellResults);
        }