public T RunOneCommandSingleResult <T>(string command, SessionParameters parameters, bool ignoreNotFoundErrors) { IEnumerable <T> source = this.RunOneCommand <T>(command, parameters, ignoreNotFoundErrors); if (source.Count <T>() == 0) { return(default(T)); } if (source.Count <T>() == 1) { return(source.First <T>()); } throw new Exception("To many results returned. Only one result expected."); }
public void SetIntraOrganizationConnector(string identity, string discoveryEndpoint, string onlineTargetAddress, bool enabled) { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("Identity", identity); sessionParameters.Set("DiscoveryEndpoint", discoveryEndpoint); MultiValuedProperty <SmtpDomain> multiValuedProperty = new MultiValuedProperty <SmtpDomain>(); SmtpDomain item = new SmtpDomain(onlineTargetAddress); multiValuedProperty.TryAdd(item); sessionParameters.Set <SmtpDomain>("TargetAddressDomains", multiValuedProperty); sessionParameters.Set("Enabled", enabled); base.RemotePowershellSession.RunOneCommand("Set-IntraOrganizationConnector", sessionParameters, false); }
private SessionParameters BuildParameters(IOutboundConnector configuration) { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("Name", configuration.Name); sessionParameters.Set <SmtpDomainWithSubdomains>("RecipientDomains", configuration.RecipientDomains); sessionParameters.Set <SmartHost>("SmartHosts", configuration.SmartHosts); sessionParameters.Set("ConnectorType", configuration.ConnectorType); sessionParameters.Set("TLSSettings", (Enum)configuration.TlsSettings); sessionParameters.Set("TLSDomain", configuration.TlsDomain); sessionParameters.Set("CloudServicesMailEnabled", configuration.CloudServicesMailEnabled); sessionParameters.Set("RouteAllMessagesViaOnPremises", configuration.RouteAllMessagesViaOnPremises); sessionParameters.Set("UseMxRecord", false); return(sessionParameters); }
public IFederationTrust GetFederationTrust(ObjectId identity) { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("Identity", identity.ToString()); Microsoft.Exchange.Data.Directory.SystemConfiguration.FederationTrust federationTrust = this.RemotePowershellSession.RunOneCommandSingleResult <Microsoft.Exchange.Data.Directory.SystemConfiguration.FederationTrust>("Get-FederationTrust", sessionParameters, false); if (federationTrust != null) { return(new Microsoft.Exchange.Management.Hybrid.Entity.FederationTrust { Name = federationTrust.Name, TokenIssuerUri = federationTrust.TokenIssuerUri }); } return(null); }
public IOrganizationalUnit GetOrganizationalUnit() { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("SingleNodeOnly", true); ExtendedOrganizationalUnit extendedOrganizationalUnit = base.RemotePowershellSession.RunOneCommandSingleResult <ExtendedOrganizationalUnit>("Get-OrganizationalUnit", sessionParameters, true); if (extendedOrganizationalUnit != null) { return(new OrganizationalUnit { Name = extendedOrganizationalUnit.Name }); } return(null); }
public object GetPowershellObjectValueOrNull(string command, string identity, string setting) { StringBuilder stringBuilder = new StringBuilder(1024); stringBuilder.Append(HybridStrings.HybridInfoGetObjectValue(setting, identity, command)); this.logger.LogInformation(stringBuilder.ToString()); object result = null; SessionParameters parameters = new SessionParameters(); Dictionary <string, object> powershellUntypedObjectAsMembers = this.GetPowershellUntypedObjectAsMembers(command, identity, parameters); if (!powershellUntypedObjectAsMembers.TryGetValue(setting, out result)) { result = null; } return(result); }
public void SetEmailAddressPolicy(string identity, string includedRecipients, ProxyAddressTemplateCollection enabledEmailAddressTemplates) { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("Identity", identity); sessionParameters.Set("ForceUpgrade", true); if (!string.IsNullOrEmpty(includedRecipients)) { sessionParameters.Set("IncludedRecipients", includedRecipients); } if (enabledEmailAddressTemplates != null) { sessionParameters.Set <ProxyAddressTemplate>("EnabledEmailAddressTemplates", enabledEmailAddressTemplates); } base.RemotePowershellSession.RunCommand("Set-EmailAddressPolicy", sessionParameters); }
public override bool Configure(ITaskContext taskContext) { if (!base.Configure(taskContext)) { return(false); } HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject; if (this.configureRemoteDomain) { string name = string.Format("Hybrid Domain - {0}", this.tenantRoutingDomain); base.OnPremisesSession.NewRemoteDomain(this.tenantRoutingDomain, name); } if (this.configureRemoteDomain || this.configureTargetDeliveryDomain) { string identity = string.Format("Hybrid Domain - {0}", this.targetDeliveryDomain); SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("TargetDeliveryDomain", true); base.OnPremisesSession.SetRemoteDomain(identity, sessionParameters); } if (this.configureAcceptedDomain) { base.OnPremisesSession.NewAcceptedDomain(this.tenantRoutingDomain, this.tenantRoutingDomain); IEnumerable <IAcceptedDomain> acceptedDomain = base.OnPremisesSession.GetAcceptedDomain(); if (acceptedDomain.Count <IAcceptedDomain>() == 0) { throw new LocalizedException(HybridStrings.ErrorNoOnPremAcceptedDomains); } taskContext.Parameters.Set <IEnumerable <IAcceptedDomain> >("_onPremAcceptedDomains", acceptedDomain); } if (this.upgradeLegacyDefaultPolicy) { base.OnPremisesSession.SetEmailAddressPolicy("default policy", "AllRecipients", null); } if (this.policiesToUpdate != null) { foreach (EmailAddressPolicy policy in this.policiesToUpdate) { this.AddTenantRoutingAddressToPolicy(policy); } foreach (EmailAddressPolicy emailAddressPolicy in this.policiesToUpdate) { base.OnPremisesSession.UpdateEmailAddressPolicy(emailAddressPolicy.DistinguishedName); } } return(true); }
private void UpgradeFopeConnectors(ITaskContext taskContext) { MultiValuedProperty <SmtpDomain> multiValuedProperty = new MultiValuedProperty <SmtpDomain>(); foreach (SmtpDomain item in base.TaskContext.HybridConfigurationObject.Domains) { multiValuedProperty.Add(item); } IOrganizationConfig organizationConfig = base.OnPremisesSession.GetOrganizationConfig(); List <string> domains = new List <string>(); OrganizationRelationship organizationRelationship = TaskCommon.GetOrganizationRelationship(base.OnPremisesSession, Configuration.OnPremGetOrgRel, domains); OrganizationRelationship organizationRelationship2 = TaskCommon.GetOrganizationRelationship(base.TenantSession, Configuration.TenantGetOrgRel, domains); if (organizationRelationship2 == null || organizationRelationship == null) { throw new LocalizedException(HybridStrings.InvalidOrganizationRelationship); } string onPremOrgRelationshipName = TaskCommon.GetOnPremOrgRelationshipName(organizationConfig); string tenantOrgRelationshipName = TaskCommon.GetTenantOrgRelationshipName(organizationConfig); SessionParameters sessionParameters = new SessionParameters(); SessionParameters sessionParameters2 = new SessionParameters(); sessionParameters.Set("Name", onPremOrgRelationshipName); sessionParameters2.Set("Name", tenantOrgRelationshipName); base.OnPremisesSession.SetOrganizationRelationship(organizationRelationship.Identity, sessionParameters); base.TenantSession.SetOrganizationRelationship(organizationRelationship2.Identity, sessionParameters2); organizationRelationship2 = TaskCommon.GetOrganizationRelationship(base.TenantSession, tenantOrgRelationshipName, domains); if (organizationRelationship2 == null) { throw new LocalizedException(HybridStrings.InvalidOrganizationRelationship); } IInboundConnector inboundConnector = base.TenantSession.GetInboundConnectors().FirstOrDefault((IInboundConnector x) => x.ConnectorSource == TenantConnectorSource.HybridWizard); if (inboundConnector == null) { throw new LocalizedException(HybridStrings.ErrorNoInboundConnector); } base.TenantSession.RenameInboundConnector(inboundConnector, Configuration.InboundConnectorName(organizationConfig.Guid.ToString())); IOutboundConnector outboundConnector = base.TenantSession.GetOutboundConnectors().FirstOrDefault((IOutboundConnector x) => x.ConnectorSource == TenantConnectorSource.HybridWizard); if (outboundConnector == null) { throw new LocalizedException(HybridStrings.ErrorNoOutboundConnector); } base.TenantSession.RenameOutboundConnector(outboundConnector, Configuration.OutboundConnectorName(organizationConfig.Guid.ToString())); base.TenantSession.NewOnPremisesOrganization(organizationConfig, multiValuedProperty, inboundConnector, outboundConnector, organizationRelationship2); }
private SessionParameters SetSendConnectorParameters(ISendConnector configuration) { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("Name", configuration.Name); sessionParameters.Set <AddressSpace>("AddressSpaces", configuration.AddressSpaces); sessionParameters.Set <ADObjectId>("SourceTransportServers", configuration.SourceTransportServers); sessionParameters.Set("DNSRoutingEnabled", configuration.DNSRoutingEnabled); sessionParameters.Set <SmartHost>("SmartHosts", configuration.SmartHosts); sessionParameters.Set("TLSDomain", configuration.TlsDomain); sessionParameters.Set("RequireTLS", configuration.RequireTLS); sessionParameters.Set("TLSAuthLevel", (Enum)configuration.TlsAuthLevel); sessionParameters.Set("ErrorPolicies", configuration.ErrorPolicies); sessionParameters.Set("TLSCertificateName", TaskCommon.ToStringOrNull(configuration.TlsCertificateName)); sessionParameters.Set("CloudServicesMailEnabled", configuration.CloudServicesMailEnabled); sessionParameters.Set("Fqdn", configuration.Fqdn); return(sessionParameters); }
public IExchangeServer GetExchangeServer(string identity) { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("Identity", identity); Microsoft.Exchange.Data.Directory.Management.ExchangeServer exchangeServer = base.RemotePowershellSession.RunOneCommandSingleResult <Microsoft.Exchange.Data.Directory.Management.ExchangeServer>("Get-ExchangeServer", sessionParameters, true); if (exchangeServer != null) { return(new Microsoft.Exchange.Management.Hybrid.Entity.ExchangeServer { Identity = (exchangeServer.Identity as ADObjectId), Name = exchangeServer.Name, ServerRole = exchangeServer.ServerRole, AdminDisplayVersion = exchangeServer.AdminDisplayVersion }); } return(null); }
public IFederatedOrganizationIdentifier GetFederatedOrganizationIdentifier() { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.SetNull <bool>("IncludeExtendedDomainInfo"); FederatedOrganizationIdWithDomainStatus federatedOrganizationIdWithDomainStatus = this.RemotePowershellSession.RunOneCommandSingleResult <FederatedOrganizationIdWithDomainStatus>("Get-FederatedOrganizationIdentifier", sessionParameters, true); if (federatedOrganizationIdWithDomainStatus != null) { return(new FederatedOrganizationIdentifier { Enabled = federatedOrganizationIdWithDomainStatus.Enabled, Domains = federatedOrganizationIdWithDomainStatus.Domains, AccountNamespace = federatedOrganizationIdWithDomainStatus.AccountNamespace, DelegationTrustLink = federatedOrganizationIdWithDomainStatus.DelegationTrustLink, DefaultDomain = federatedOrganizationIdWithDomainStatus.DefaultDomain }); } return(null); }
public IReceiveConnector GetReceiveConnector(ADObjectId server) { SessionParameters sessionParameters = new SessionParameters(); sessionParameters.Set("Server", server.Name); return((from c in base.RemotePowershellSession.RunOneCommand <Microsoft.Exchange.Data.Directory.SystemConfiguration.ReceiveConnector>("Get-ReceiveConnector", sessionParameters, true).Where(delegate(Microsoft.Exchange.Data.Directory.SystemConfiguration.ReceiveConnector c) { if (c.Bindings != null) { foreach (IPBinding ipbinding in c.Bindings) { if (ipbinding.Port == 25 && ipbinding.Address.ToString() == "::") { return true; } } return false; } return false; }) select new Microsoft.Exchange.Management.Hybrid.Entity.ReceiveConnector(c)).FirstOrDefault <Microsoft.Exchange.Management.Hybrid.Entity.ReceiveConnector>()); }
public IOnPremisesOrganization NewOnPremisesOrganization(IOrganizationConfig onPremisesOrgConfig, MultiValuedProperty <SmtpDomain> hybridDomains, IInboundConnector inboundConnector, IOutboundConnector outboundConnector, OrganizationRelationship tenantOrgRel) { Microsoft.Exchange.Management.Hybrid.Entity.OnPremisesOrganization onPremisesOrganization = new Microsoft.Exchange.Management.Hybrid.Entity.OnPremisesOrganization(onPremisesOrgConfig.Guid, onPremisesOrgConfig.Name, hybridDomains, inboundConnector.Identity, outboundConnector.Identity, onPremisesOrgConfig.Guid.ToString(), (ADObjectId)tenantOrgRel.Identity); SessionParameters sessionParameters = this.BuildParameters(onPremisesOrganization); sessionParameters.Set("Name", onPremisesOrganization.Name); sessionParameters.Set("OrganizationGuid", onPremisesOrganization.OrganizationGuid); Microsoft.Exchange.Data.Directory.SystemConfiguration.OnPremisesOrganization onPremisesOrganization2 = base.RemotePowershellSession.RunOneCommandSingleResult <Microsoft.Exchange.Data.Directory.SystemConfiguration.OnPremisesOrganization>("New-OnPremisesOrganization", sessionParameters, false); if (onPremisesOrganization2 != null) { return(new Microsoft.Exchange.Management.Hybrid.Entity.OnPremisesOrganization { Identity = (ADObjectId)onPremisesOrganization2.Identity, OrganizationGuid = onPremisesOrganization2.OrganizationGuid, OrganizationName = onPremisesOrganization2.OrganizationName, HybridDomains = onPremisesOrganization2.HybridDomains, InboundConnector = onPremisesOrganization2.InboundConnector, OutboundConnector = onPremisesOrganization2.OutboundConnector, Name = onPremisesOrganization2.Name, OrganizationRelationship = onPremisesOrganization2.OrganizationRelationship }); } return(null); }
public void RunOneCommand(string command, SessionParameters parameters, bool ignoreNotFoundErrors) { this.RunOneCommand <object>(command, parameters, ignoreNotFoundErrors); }
public Dictionary <string, object> GetPowershellUntypedObjectAsMembers(string command, string identity, SessionParameters parameters) { if (!string.IsNullOrEmpty(identity)) { parameters.Set("Identity", identity); } List <Dictionary <string, object> > powershellUntypedObjectsAsMembers = this.GetPowershellUntypedObjectsAsMembers(command, identity, parameters); if (powershellUntypedObjectsAsMembers.Count > 1) { List <string> list = new List <string>(powershellUntypedObjectsAsMembers.Count); foreach (Dictionary <string, object> dictionary in powershellUntypedObjectsAsMembers) { string item = (dictionary["Identity"] != null) ? dictionary["Identity"].ToString() : string.Empty; list.Add(item); } throw new TooManyResultsException(identity ?? string.Empty, HybridStrings.ErrorTooManyMatchingResults(identity ?? string.Empty), null, list); } return(powershellUntypedObjectsAsMembers[0]); }
public IntraOrganizationConfiguration GetIntraOrganizationConfiguration() { SessionParameters parameters = new SessionParameters(); return(base.RemotePowershellSession.RunOneCommandSingleResult <IntraOrganizationConfiguration>("Get-IntraOrganizationConfiguration", parameters, true)); }
public List <Dictionary <string, object> > GetPowershellUntypedObjectsAsMembers(string command, string identity, SessionParameters parameters) { if (!string.IsNullOrEmpty(identity)) { parameters.Set("Identity", identity); } Collection <PSObject> collection = this.RunCommand(command, parameters, true); if (collection == null || collection.Count == 0) { this.logger.LogInformation(HybridStrings.HybridInfoObjectNotFound); return(null); } List <Dictionary <string, object> > list = new List <Dictionary <string, object> >(); foreach (PSObject psobject in collection) { Dictionary <string, object> dictionary = new Dictionary <string, object>(); foreach (PSMemberInfo psmemberInfo in psobject.Members) { dictionary.Add(psmemberInfo.Name, psmemberInfo.Value); } list.Add(dictionary); } return(list); }
public Collection <PSObject> RunCommand(string cmdlet, SessionParameters parameters) { return(this.RunCommand(cmdlet, parameters, true)); }
public override bool Configure(ITaskContext taskContext) { if (!base.Configure(taskContext)) { return(false); } HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject; SessionParameters sessionParameters = new SessionParameters(); SessionParameters sessionParameters2 = new SessionParameters(); if (hybridConfigurationObject.MoveMailboxEnabled != this.onPremOrgRel.MailboxMoveEnabled) { sessionParameters.Set("MailboxMoveEnabled", hybridConfigurationObject.MoveMailboxEnabled); } if (hybridConfigurationObject.FreeBusySharingEnabled != this.onPremOrgRel.FreeBusyAccessEnabled || hybridConfigurationObject.FreeBusySharingEnabled != this.tenantOrgRel.FreeBusyAccessEnabled) { sessionParameters.Set("FreeBusyAccessEnabled", hybridConfigurationObject.FreeBusySharingEnabled); sessionParameters2.Set("FreeBusyAccessEnabled", hybridConfigurationObject.FreeBusySharingEnabled); } if (hybridConfigurationObject.FreeBusySharingEnabled && (this.onPremOrgRel.FreeBusyAccessLevel != FreeBusyAccessLevel.LimitedDetails || this.tenantOrgRel.FreeBusyAccessLevel != FreeBusyAccessLevel.LimitedDetails)) { sessionParameters.Set("FreeBusyAccessLevel", FreeBusyAccessLevel.LimitedDetails); sessionParameters2.Set("FreeBusyAccessLevel", FreeBusyAccessLevel.LimitedDetails); } if (hybridConfigurationObject.OnlineArchiveEnabled != this.onPremOrgRel.ArchiveAccessEnabled) { sessionParameters.Set("ArchiveAccessEnabled", hybridConfigurationObject.OnlineArchiveEnabled); } if (hybridConfigurationObject.MailtipsEnabled != this.onPremOrgRel.MailTipsAccessEnabled || hybridConfigurationObject.MailtipsEnabled != this.tenantOrgRel.MailTipsAccessEnabled) { sessionParameters.Set("MailTipsAccessEnabled", hybridConfigurationObject.MailtipsEnabled); sessionParameters2.Set("MailTipsAccessEnabled", hybridConfigurationObject.MailtipsEnabled); } if (hybridConfigurationObject.MailtipsEnabled && (this.onPremOrgRel.MailTipsAccessLevel != MailTipsAccessLevel.All || this.tenantOrgRel.MailTipsAccessLevel != MailTipsAccessLevel.All)) { sessionParameters.Set("MailTipsAccessLevel", MailTipsAccessLevel.All); sessionParameters2.Set("MailTipsAccessLevel", MailTipsAccessLevel.All); } if (hybridConfigurationObject.MessageTrackingEnabled != this.onPremOrgRel.DeliveryReportEnabled || hybridConfigurationObject.MessageTrackingEnabled != this.tenantOrgRel.DeliveryReportEnabled) { sessionParameters.Set("DeliveryReportEnabled", hybridConfigurationObject.MessageTrackingEnabled); sessionParameters2.Set("DeliveryReportEnabled", hybridConfigurationObject.MessageTrackingEnabled); } if (hybridConfigurationObject.PhotosEnabled != this.onPremOrgRel.PhotosEnabled || hybridConfigurationObject.PhotosEnabled != this.tenantOrgRel.PhotosEnabled) { sessionParameters.Set("PhotosEnabled", hybridConfigurationObject.PhotosEnabled); sessionParameters2.Set("PhotosEnabled", hybridConfigurationObject.PhotosEnabled); } string text = (this.onPremOrgRel.TargetOwaURL != null) ? this.onPremOrgRel.TargetOwaURL.ToString() : string.Empty; if (hybridConfigurationObject.OwaRedirectionEnabled || !string.IsNullOrEmpty(text)) { if (hybridConfigurationObject.OwaRedirectionEnabled) { IEnumerable <IAcceptedDomain> acceptedDomains = taskContext.Parameters.Get <IEnumerable <IAcceptedDomain> >("_tenantAcceptedDomains"); if (!string.IsNullOrEmpty(text)) { if (!this.ValidateOwaUri(text, acceptedDomains)) { sessionParameters.Set("TargetOwaURL", this.GetDefaultOwaUri(acceptedDomains, this.fedOrgId)); } } else { sessionParameters.Set("TargetOwaURL", this.GetDefaultOwaUri(acceptedDomains, this.fedOrgId)); } } else { sessionParameters.SetNull <string>("TargetOwaURL"); } } if (sessionParameters.Count > 0) { OrganizationRelationship organizationRelationship = taskContext.Parameters.Get <OrganizationRelationship>("_onPremOrgRel"); base.OnPremisesSession.SetOrganizationRelationship(organizationRelationship.Identity, sessionParameters); List <string> list = new List <string>(); string item = taskContext.Parameters.Get <string>("_hybridDomain"); list.Add(item); this.onPremOrgRel = TaskCommon.GetOrganizationRelationship(taskContext.OnPremisesSession, TaskCommon.GetOnPremOrgRelationshipName(this.OnPremOrgConfig), list); taskContext.Parameters.Set <OrganizationRelationship>("_onPremOrgRel", this.onPremOrgRel); } if (sessionParameters2.Count > 0) { OrganizationRelationship organizationRelationship2 = taskContext.Parameters.Get <OrganizationRelationship>("_tenantOrgRel"); base.TenantSession.SetOrganizationRelationship(organizationRelationship2.Identity, sessionParameters2); IEnumerable <string> domains = taskContext.Parameters.Get <IEnumerable <string> >("_hybridDomainList"); this.tenantOrgRel = TaskCommon.GetOrganizationRelationship(taskContext.TenantSession, TaskCommon.GetTenantOrgRelationshipName(this.OnPremOrgConfig), domains); taskContext.Parameters.Set <OrganizationRelationship>("_onPremOrgRel", this.tenantOrgRel); } this.ConfigureAvailabilityAddressSpace(taskContext); return(true); }
public void SetRemoteDomain(string identity, SessionParameters parameters) { parameters.Set("Identity", identity); base.RemotePowershellSession.RunOneCommand("Set-RemoteDomain", parameters, false); }
public void SetOrganizationRelationship(ObjectId identity, SessionParameters parameters) { parameters.Set("Identity", identity.ToString()); this.RemotePowershellSession.RunCommand("Set-OrganizationRelationship", parameters); }