<# INTRO
Let's try to have JSON configuration data for parameters of cmdlets like New, Set or Get and use PS functions to construct and all the cmdlets by a unified form aka cmdlet-less code.
JSON data can be gatthered for example via:
https://microsoft365dsc.com/
https://practical365.com/dsc-snapshot-microsoft365-tenant/
$Credential = Get-Credential
Export-M365DSCConfiguration -Components @("AADApplication", "AADConditionalAccessPolicy", "AADGroup", "AADGroupLifecyclePolicy", "AADGroupsNamingPolicy", "AADGroupsSettings", "AADNamedLocationPolicy", "AADRoleDefinition", "AADTenantDetails", "AADTokenLifetimePolicy", "EXOAcceptedDomain", "EXOActiveSyncDeviceAccessRule", "EXOAddressBookPolicy", "EXOAddressList", "EXOAntiPhishPolicy", "EXOAntiPhishRule", "EXOApplicationAccessPolicy", "EXOAtpPolicyForO365", "EXOAuthenticationPolicy", "EXOAvailabilityAddressSpace", "EXOAvailabilityConfig", "EXOCASMailboxPlan", "EXOClientAccessRule", "EXODkimSigningConfig", "EXOEmailAddressPolicy", "EXOGlobalAddressList", "EXOHostedConnectionFilterPolicy", "EXOHostedContentFilterPolicy", "EXOHostedContentFilterRule", "EXOHostedOutboundSpamFilterPolicy", "EXOHostedOutboundSpamFilterRule", "EXOInboundConnector", "EXOIntraOrganizationConnector", "EXOJournalRule", "EXOMailboxPlan", "EXOMailTips", "EXOMalwareFilterPolicy", "EXOMalwareFilterRule", "EXOManagementRole", "EXOMobileDeviceMailboxPolicy", "EXOOfflineAddressBook", "EXOOnPremisesOrganization", "EXOOrganizationConfig", "EXOOrganizationRelationship", "EXOOutboundConnector", "EXOOwaMailboxPolicy", "EXOPartnerApplication", "EXOPolicyTipConfig", "EXOQuarantinePolicy", "EXORemoteDomain", "EXORoleAssignmentPolicy", "EXOSafeAttachmentPolicy", "EXOSafeAttachmentRule", "EXOSafeLinksPolicy", "EXOSafeLinksRule", "EXOSharedMailbox", "EXOSharingPolicy", "EXOTransportConfig", "EXOTransportRule", "IntuneAppConfigurationPolicy", "IntuneAppProtectionPolicyiOS", "IntuneDeviceCategory", "IntuneDeviceCompliancePolicyAndroid", "IntuneDeviceCompliancePolicyAndroidDeviceOwner", "IntuneDeviceCompliancePolicyAndroidWorkProfile", "IntuneDeviceCompliancePolicyiOs", "IntuneDeviceCompliancePolicyMacOS", "IntuneDeviceCompliancePolicyWindows10", "IntuneDeviceConfigurationPolicyAndroidDeviceOwner", "IntuneDeviceConfigurationPolicyAndroidWorkProfile", "IntuneDeviceConfigurationPolicyiOS", "IntuneDeviceConfigurationPolicyWindows10", "IntuneDeviceEnrollmentLimitRestriction", "IntuneDeviceEnrollmentPlatformRestriction", "O365AdminAuditLogConfig", "O365OrgCustomizationSetting", "ODSettings", "PPTenantIsolationSettings", "PPTenantSettings", "SCAuditConfigurationPolicy", "SCCaseHoldPolicy", "SCCaseHoldRule", "SCComplianceCase", "SCComplianceSearch", "SCComplianceSearchAction", "SCComplianceTag", "SCDeviceConditionalAccessPolicy", "SCDeviceConfigurationPolicy", "SCDLPCompliancePolicy", "SCDLPComplianceRule", "SCFilePlanPropertyAuthority", "SCFilePlanPropertyCategory", "SCFilePlanPropertyCitation", "SCFilePlanPropertyDepartment", "SCFilePlanPropertyReferenceId", "SCFilePlanPropertySubCategory", "SCLabelPolicy", "SCRetentionCompliancePolicy", "SCRetentionComplianceRule", "SCRetentionEventType", "SCSensitivityLabel", "SCSupervisoryReviewPolicy", "SCSupervisoryReviewRule", "SPOAccessControlSettings", "SPOApp", "SPOBrowserIdleSignout", "SPOHomeSite", "SPOHubSite", "SPOOrgAssetsLibrary", "SPOSearchManagedProperty", "SPOSearchResultSource", "SPOSharingSettings", "SPOSiteDesign", "SPOSiteDesignRights", "SPOSiteScript", "SPOStorageEntity", "SPOTenantCdnEnabled", "SPOTenantCdnPolicy", "SPOTenantSettings", "SPOTheme", "TeamsCallingPolicy", "TeamsChannel", "TeamsChannelsPolicy", "TeamsClientConfiguration", "TeamsEmergencyCallingPolicy", "TeamsEmergencyCallRoutingPolicy", "TeamsFederationConfiguration", "TeamsGuestCallingConfiguration", "TeamsGuestMeetingConfiguration", "TeamsGuestMessagingConfiguration", "TeamsMeetingBroadcastConfiguration", "TeamsMeetingBroadcastPolicy", "TeamsMeetingConfiguration", "TeamsMeetingPolicy", "TeamsMessagingPolicy", "TeamsPstnUsage", "TeamsTenantDialPlan", "TeamsUpgradeConfiguration", "TeamsUpgradePolicy", "TeamsVoiceRoute", "TeamsVoiceRoutingPolicy") -Credential $Credential -Path "C:\DSC"
New-M365DSCReportFromConfiguration -Type html -ConfigurationPath -OutputPath
New-M365DSCReportFromConfiguration -Type excel -ConfigurationPath -OutputPath
New-M365DSCDeltaReport -Source -Destination -OutputPath ".html"
#>
# Example below for EXO settings
# EXO CONFIGURATION (JSON)
#region InboundConnector
$InboundConnector ='{
"Id": "From GW to EXO",
"Type": "EXO",
"Action": "New-InboundConnector",
"Test": "Get-InboundConnector",
"Data": {
"TreatMessagesAsInternal": false,
"RestrictDomainsToIPAddresses": false,
"Name": "From GW to EXO",
"RequireTls": true,
"CloudServicesMailEnabled": true,
"ConnectorSource": "Default",
"ConnectorType": "OnPremises",
"SenderIPAddresses": [],
"Comment": "From GW to EXO",
"SenderDomains": "smtp:*;1",
"AssociatedAcceptedDomains": [],
"Enabled": true,
"RestrictDomainsToCertificate": true,
"TlsSenderCertificateName": "*.kasaj.cz"
}
}'
#endregion
#region OutboundConnetor
$OutboundConnector = '{
"Id": "From EXO to GW",
"Type": "EXO",
"Action": "New-OutboundConnector",
"Test": "Get-OutboundConnector",
"Data": {
"RouteAllMessagesViaOnPremises": false,
"Enabled": true,
"CloudServicesMailEnabled": true,
"UseMxRecord": false,
"SmartHosts": ["wes1-mx1.wedos.net","wes1-mx2.wedos.net"],
"TlsSettings": "CertificateValidation",
"RecipientDomains": [],
"Name": "From EXO to GW",
"Comment": "From EXO to GW, TR in use",
"IsTransportRuleScoped": true,
"ConnectorSource": "Default",
"TestMode": false,
"AllAcceptedDomains": false,
"ConnectorType": "OnPremises"
}
}'
#endregion
#region TransportRule
$TransportRule = '[{
"Id": "TR - Block External Delivery to onmicrosoft.com domains",
"Type": "EXO",
"Action": "New-TransportRule",
"Test": "Get-TransportRule -Identity $Id",
"Data": {
"ExceptIfAttachmentProcessingLimitExceeded": false,
"ExceptIfAttachmentHasExecutableContent": false,
"RecipientAddressContainsWords": ["M365x11772468.onmicrosoft.com","M365x11772468.mail.onmicrosoft.com"],
"RuleSubType": "None",
"ApplyOME": false,
"AttachmentIsUnsupported": false,
"ExceptIfAttachmentIsUnsupported": false,
"ExceptIfHeaderMatchesMessageHeader": "X-RoutedThroughGW",
"ModerateMessageByManager": false,
"RouteMessageOutboundRequireTls": false,
"Mode": "Enforce",
"RejectMessageEnhancedStatusCode": "5.7.1",
"AttachmentHasExecutableContent": false,
"ExceptIfHasSenderOverride": false,
"AttachmentProcessingLimitExceeded": false,
"DeleteMessage": false,
"ExceptIfHeaderMatchesPatterns": "Yes",
"RuleErrorAction": "Ignore",
"HasSenderOverride": false,
"ExceptIfHasNoClassification": false,
"HasNoClassification": false,
"RejectMessageReasonText": "External delivery not allowed to onmicrosoft.com addresses",
"Priority": 4,
"AttachmentIsPasswordProtected": false,
"FromScope": "NotInOrganization",
"RemoveOMEv2": false,
"RemoveOME": false,
"SenderAddressLocation": "Header",
"Name": "TR - Block External Delivery to onmicrosoft.com domains",
"ExceptIfAttachmentIsPasswordProtected": false,
"StopRuleProcessing": true
}
},
{
"Id": "TR - From EXO to GW",
"Type": "EXO",
"Action": "New-TransportRule",
"Test": "Get-TransportRule -Identity $Id",
"Data": {
"ExceptIfAttachmentProcessingLimitExceeded": false,
"ExceptIfAttachmentHasExecutableContent": false,
"RemoveOMEv2": false,
"ApplyOME": false,
"AttachmentIsUnsupported": false,
"ExceptIfAttachmentIsUnsupported": false,
"ExceptIfHeaderMatchesMessageHeader": "X-HD1",
"ModerateMessageByManager": false,
"RouteMessageOutboundRequireTls": false,
"Mode": "Enforce",
"AttachmentHasExecutableContent": false,
"ExceptIfHasSenderOverride": false,
"AttachmentProcessingLimitExceeded": false,
"RouteMessageOutboundConnector": "From EXO to GW",
"DeleteMessage": false,
"ExceptIfHeaderMatchesPatterns": "Yes",
"RuleSubType": "None",
"HasSenderOverride": false,
"ExceptIfHasNoClassification": false,
"HasNoClassification": false,
"SentToScope": "NotInOrganization",
"Priority": 2,
"AttachmentIsPasswordProtected": false,
"RuleErrorAction": "Ignore",
"RemoveOME": false,
"SenderAddressLocation": "Header",
"Name": "TR - From EXO to GW",
"ExceptIfAttachmentIsPasswordProtected": false,
"StopRuleProcessing": true
}
}]'
#endregion
#region RemoteDomain
$RemoteDomain ='{
"Id": "Default",
"Type": "EXO",
"Action": "Set-RemoteDomain",
"Test": "Get-RemoteDomain",
"Data":
{
"IsInternal": false,
"TargetDeliveryDomain": false,
"ByteEncoderTypeFor7BitCharsets": "Undefined",
"CharacterSet": "iso-8859-1",
"NonMimeCharacterSet": "iso-8859-1",
"AllowedOOFType": "External",
"AutoReplyEnabled": false,
"AutoForwardEnabled": false,
"DeliveryReportEnabled": true,
"NDREnabled": true,
"MeetingForwardNotificationEnabled": true,
"ContentType": "MimeHtmlText",
"DisplaySenderName": false,
"PreferredInternetCodePageForShiftJis": "Undefined",
"RequiredCharsetCoverage": null,
"TNEFEnabled": null,
"LineWrapSize": "Unlimited",
"TrustedMailOutboundEnabled": false,
"TrustedMailInboundEnabled": false,
"UseSimpleDisplayName": false,
"NDRDiagnosticInfoEnabled": true,
"Identity": "Default"
}
}'
#endregion
#region TransportConfiguration
$TransportConfig = '{
"Id": "b707e374f337438b8edd5a4feb7934e5",
"Type": "EXO",
"Action": "Set-TransportConfig",
"Test": "Get-TransportConfig",
"Data": {
"AllowLegacyTLSClients": false,
"HeaderPromotionModeSetting": "NoCreate",
"ReplyAllStormBlockDurationHours": 6,
"ReplyAllStormDetectionMinimumRecipients": 2500,
"ReplyAllStormProtectionEnabled": true,
"Rfc2231EncodingEnabled": false,
"ExternalDsnSendHtml": true,
"DSNConversionMode": "PreserveDSNBody",
"ClearCategories": true,
"ExternalDsnLanguageDetectionEnabled": true,
"ReplyAllStormDetectionMinimumReplies": 10,
"JournalMessageExpirationDays": 0,
"InternalDsnSendHtml": true,
"AddressBookPolicyRoutingEnabled": false,
"ExternalDelayDsnEnabled": true,
"InternalDsnLanguageDetectionEnabled": true,
"SmtpClientAuthenticationDisabled": true,
"ConvertDisclaimerWrapperToEml": false,
"MaxRecipientEnvelopeLimit": "Unlimited",
"InternalDelayDsnEnabled": true,
"JournalingReportNdrTo": "\u003c\u003e"
},
}'
#endregion
#region OrganizationConfig
$OrganizationConfig = '{
"Id": "OrganizationConfig",
"Type": "EXO",
"Action": "Set-OrganizationConfig",
"Test": "Get-OrganizationConfig",
"Data": {
"ShortenEventScopeDefault": "none",
"ExchangeNotificationEnabled": true,
"MailTipsLargeAudienceThreshold": 25,
"ConnectorsEnabledForOutlook": false,
"OutlookGifPickerDisabled": false,
"AllowPlusAddressInRecipients": false,
"MailTipsExternalRecipientsTipsEnabled": true,
"AsyncSendEnabled": true,
"ActivityBasedAuthenticationTimeoutEnabled": true,
"LinkPreviewEnabled": true,
"DefaultGroupAccessType": "Private",
"CustomerLockboxEnabled": false,
"OutlookMobileGCCRestrictionsEnabled": false,
"DistributionGroupNameBlockedWordsList": [],
"VisibleMeetingUpdateProperties": "Location,AllProperties:15",
"ConnectorsEnabledForSharepoint": true,
"SendFromAliasEnabled": false,
"ElcProcessingDisabled": false,
"WebPushNotificationsDisabled": false,
"WebSuggestedRepliesDisabled": false,
"DefaultPublicFolderProhibitPostQuota": "2 GB (2,147,483,648 bytes)",
"ReadTrackingEnabled": false,
"AppsForOfficeEnabled": false,
"MessageRemindersEnabled": true,
"RemotePublicFolderMailboxes": [],
"ConnectorsActionableMessagesEnabled": true,
"MobileAppEducationEnabled": true,
"ConnectorsEnabledForTeams": true,
"DisablePlusAddressInRecipients": true,
"AuditDisabled": false,
"BookingsSocialSharingRestricted": true,
"OAuth2ClientProfileEnabled": true,
"EndUserDLUpgradeFlowsDisabled": true,
"ByteEncoderTypeFor7BitCharsets": 0,
"DirectReportsGroupAutoCreationEnabled": false,
"ActivityBasedAuthenticationTimeoutWithSingleSignOnEnabled": true,
"DefaultPublicFolderMovedItemRetention": "7.00:00:00",
"SmtpActionableMessagesEnabled": true,
"DefaultPublicFolderDeletedItemRetention": "30.00:00:00",
"LeanPopoutEnabled": false,
"ActivityBasedAuthenticationTimeoutInterval": "06:00:00",
"DefaultPublicFolderMaxItemSize": "Unlimited",
"DefaultPublicFolderIssueWarningQuota": "1.7 GB (1,825,361,920 bytes)",
"BookingsPaymentsEnabled": false,
"IPListBlocked": [],
"ConnectorsEnabled": false,
"ExchangeNotificationRecipients": [],
"BookingsEnabled": false,
"MailTipsGroupMetricsEnabled": true,
"PublicComputersDetectionEnabled": false,
"OutlookPayEnabled": false,
"MailTipsAllTipsEnabled": true,
"PublicFoldersEnabled": "Local",
"ConnectorsEnabledForYammer": false,
"PublicFolderShowClientControl": false,
"DistributionGroupNamingPolicy": "",
"MailTipsMailboxSourcedTipsEnabled": true
}
}'
#endregion
#region HostedContentFilterPolicy
$HostedContentFilterPolicy = '{
"Id": "c5b2629579c2467f8e446457a19bae7e",
"Type": "EXO",
"Name": "HostedContentFilterPolicy",
"Action": "New",
"Data": {
"InlineSafetyTipsEnabled": true,
"MarkAsSpamJavaScriptInHtml": "Off",
"Identity": "Default",
"SpamZapEnabled": true,
"EndUserSpamNotificationLanguage": "Default",
"SpamAction": "MoveToJmf",
"MakeDefault": true,
"HighConfidenceSpamAction": "MoveToJmf",
"EndUserSpamNotificationFrequency": 3,
"TestModeBccToRecipients": [
],
"HighConfidencePhishAction": "Quarantine",
"BulkThreshold": 7,
"PhishSpamAction": "MoveToJmf",
"DownloadLink": false,
"PhishZapEnabled": true,
"MarkAsSpamObjectTagsInHtml": "Off",
"MarkAsSpamFramesInHtml": "Off",
"EndUserSpamNotificationCustomSubject": "",
"RedirectToRecipients": [
],
"BulkSpamAction": "MoveToJmf",
"LanguageBlockList": [
],
"QuarantineRetentionPeriod": 15,
"EnableEndUserSpamNotifications": false,
"MarkAsSpamBulkMail": "On",
"IncreaseScoreWithNumericIps": "Off",
"MarkAsSpamEmbedTagsInHtml": "Off",
"MarkAsSpamSensitiveWordList": "Off",
"RegionBlockList": [
],
"MarkAsSpamFromAddressAuthFail": "Off",
"EnableLanguageBlockList": false,
"MarkAsSpamEmptyMessages": "Off",
"EnableRegionBlockList": false,
"AddXHeaderValue": "",
"IncreaseScoreWithBizOrInfoUrls": "Off",
"MarkAsSpamSpfRecordHardFail": "Off",
"AdminDisplayName": "",
"MarkAsSpamWebBugsInHtml": "Off",
"TestModeAction": "None",
"MarkAsSpamNdrBackscatter": "Off",
"MarkAsSpamFormTagsInHtml": "Off",
"ModifySubjectValue": "",
"IncreaseScoreWithImageLinks": "Off",
"IncreaseScoreWithRedirectToOtherPort": "Off"
},
"Permission": "Exchange Administrator"
}
'
#endregion
#region HostedConnectionFilterPolicy
$HostedConnectionFilterPolicy = '{
"Id": "92755ec5ff4e48aeb4c3e7a8cd747619",
"Type": "EXO",
"Name": "HostedConnectionFilterPolicy",
"Action": "New",
"Data": {
"AdminDisplayName": "",
"IPBlockList": [
],
"Identity": "Default",
"EnableSafeList": false,
"MakeDefault": false,
"IPAllowList": [
]
},
"Permission": "Exchange Administrator"
}'
#endregion
# FUNCTIONS
Function Compare-ObjectProperties {
Param(
[PSObject]$ReferenceObject,
[PSObject]$DifferenceObject
)
$objprops = $ReferenceObject | Get-Member -MemberType Property,NoteProperty | % Name
$objprops += $DifferenceObject | Get-Member -MemberType Property,NoteProperty | % Name
$objprops = $objprops | Sort | Select -Unique
$diffs = @()
foreach ($objprop in $objprops) {
$diff = Compare-Object $ReferenceObject $DifferenceObject -Property $objprop
if ($diff) {
$diffprops = @{
PropertyName=$objprop
RefValue
=($diff | ? {$_.SideIndicator
-eq '<='} | % $
($objprop)) DiffValue
=($diff | ? {$_.SideIndicator
-eq '=>'} | % $
($objprop)) }
$diffs += New-Object PSObject -Property $diffprops
}
}
if ($diffs) {
return ($diffs | Select PropertyName,RefValue,DiffValue)
}
}
function Start-ConfAction ($Act,$Data,$Force,$Prop, $Ver){
$Members = $Data|gm|where MemberType
-eq "NoteProperty"|%{$_.name
} [string] $Cmdlet = $act
[string] $CmdletInc = $act
foreach($Member in $Members){
$Cmdlet += " -"+$Member+' $Data.'+$Member
if($Prop -and ($Prop -contains $Member)){
$CmdletInc += " -"+$Member+' $Data.'+$Member
}
}
if($Prop){
if($Ver){
$CmdletInc += ' -Verbose -WhatIf'
}
$CmdletInc
}else{
$Cmdlet
}
if($force -like "f*"){
if($Prop){
Invoke-Expression -Command $CmdletInc
}else{
Invoke-Expression -Command $Cmdlet
}
}
}
function Test-ConfData ($Conf){
$Data = $Conf.data
$Id = $conf.Id
$Members = $Data|gm|where MemberType
-eq "NoteProperty"|%{$_.name
} $Get = Invoke-Expression -Command $Conf.Test |select -Property $Members
if($Get){
$Comp = Compare-ObjectProperties $Data $Get
}
if($comp -and $Get -and !$error){
$comp
}elseif(!$comp -and $Get -and !$error){
"OK"
}else{
"Not detected!"
}
}
# MAIN
Connect-ExchangeOnline
Connect-IPPSSession
#region InboundConnector
$Conf = @()
$Conf = $InboundConnector | ConvertFrom-Json
$Conf.data
<# Output example:
Enabled : True
ConnectorType : OnPremises
Comment : Inbound from GW
SenderIPAddresses : {}
SenderDomains : {smtp:*;1}
TrustedOrganizations : {}
AssociatedAcceptedDomains : {}
RequireTls : True
RestrictDomainsToIPAddresses : False
RestrictDomainsToCertificate : True
CloudServicesMailEnabled : True
TreatMessagesAsInternal : False
TlsSenderCertificateName : *.kasaj.cz
EFTestMode : False
ScanAndDropRecipients : {}
EFSkipLastIP : False
EFSkipIPs : {}
EFSkipMailGateway : {}
EFUsers : {}
Name : Inbound from GW
#>
Test-ConfData $Conf
<# Output example:
PropertyName RefValue DiffValue
------------ -------- ---------
Comment Inbound from GW Connector disabled
Enabled True False
#>
Start-ConfAction $Conf.Action $Conf.Data
<# Output example:
New-InboundConnector -AssociatedAcceptedDomains $Data.AssociatedAcceptedDomains -CloudServicesMailEnabled $Data.CloudServicesMailEnabled -Comment $Data.Comment -ConnectorType $Data.ConnectorType -EFSkipIPs $Data.EFSkipIPs -EFSkipLastIP $Data.EFSkipLastIP -EFSkipMailGateway $Data.EFSkipMailGateway -EFTestMode $Data.EFTestMode -EFUsers $Data.EFUsers -Enabled $Data.Enabled -Name $Data.Name -RequireTls $Data.RequireTls -RestrictDomainsToCertificate $Data.RestrictDomainsToCertificate -RestrictDomainsToIPAddresses $Data.RestrictDomainsToIPAddresses -ScanAndDropRecipients $Data.ScanAndDropRecipients -SenderDomains $Data.SenderDomains -SenderIPAddresses $Data.SenderIPAddresses -TlsSenderCertificateName $Data.TlsSenderCertificateName -TreatMessagesAsInternal $Data.TreatMessagesAsInternal -TrustedOrganizations $Data.TrustedOrganizations
#>
Start-ConfAction $Conf.Action $Conf.Data force
# Start-ConfAction "Set-InboundConnector -identity 'Outbound to GW'" $Conf.Data force
#endregion
#region OutboundConnector
$Conf = @()
$Conf = $OutboundConnector | ConvertFrom-Json
$Conf.data
Test-ConfData $Conf
Start-ConfAction $Conf.Action $Conf.Data nonforce $((Test-ConfData $Conf).PropertyName)
Start-ConfAction $Conf.Action $Conf.Data nonforce $((Test-ConfData $Conf).PropertyName) "ver"
Start-ConfAction $Conf.Action $Conf.Data force
# Start-ConfAction "Set-OrganizationConfig" $Conf.Data nonforce $Conf.Data force $((Test-ConfData $Conf).PropertyName) "V"
# Start-ConfAction "Set-OrganizationConfig" $Conf.Data force
#endregion
#region TransporRule
$Conf = @()
$Conf = $TransportRule| ConvertFrom-Json
$Conf[0].data
Test-ConfData $Conf[0]
Start-ConfAction $Conf[0].Action $Conf[0].Data
Start-ConfAction $Conf[0].Action $Conf[0].Data force
# Start-ConfAction "Set-TransportRule -identity 'TR - Block External Delivery to onmicrosoft.com domains'" $Conf[0].Data nonforce $((Test-ConfData $Conf[0]).PropertyName)
# Start-ConfAction "Set-TransportRule -identity 'TR - Block External Delivery to onmicrosoft.com domains'" $Conf[0].Data force
$Conf[1].data
Test-ConfData $Conf[1]
Start-ConfAction $Conf[1].Action $Conf[1].Data
Start-ConfAction $Conf[1].Action $Conf[1].Data force
# Start-ConfAction "Set-TransportRule -identity 'TR - From EXO to GW'" $Conf.Data force
#endregion
#region RemoteDomain
$Conf = @()
$Conf = $RemoteDomain | ConvertFrom-Json
$Conf.data
Test-ConfData $Conf
Start-ConfAction $Conf.Action $Conf.Data nonforce $((Test-ConfData $Conf).PropertyName)
Start-ConfAction $Conf.Action $Conf.Data force
#endregion
#region OrganizationConfig
$Conf = @()
$Conf = $OrganizationConfig | ConvertFrom-Json
$Conf.data
Test-ConfData $Conf
Start-ConfAction $Conf.Action $Conf.Data force $((Test-ConfData $Conf).PropertyName+"ShortenEventScopeDefault") "what"
Start-ConfAction $Conf.Action $Conf.Data force
#endregion