@@ -36,16 +36,18 @@ function Invoke-CIPPStandardTeamsFederationConfiguration {
3636
3737 $CurrentState = New-TeamsRequest - TenantFilter $Tenant - Cmdlet ' Get-CsTenantFederationConfiguration' - CmdParams @ {Identity = ' Global' } | Select-Object *
3838
39+ $AllowAllKnownDomains = New-CsEdgeAllowAllKnownDomains
3940 $DomainControl = $Settings.DomainControl.value ?? $Settings.DomainControl
41+ $AllowedDomainsAsAList = $null
4042 switch ($DomainControl ) {
4143 ' AllowAllExternal' {
4244 $AllowFederatedUsers = $true
43- $AllowedDomainsAsAList = ' AllowAllKnownDomains'
45+ $AllowedDomains = $ AllowAllKnownDomains
4446 $BlockedDomains = @ ()
4547 }
4648 ' BlockAllExternal' {
4749 $AllowFederatedUsers = $false
48- $AllowedDomainsAsAList = ' AllowAllKnownDomains'
50+ $AllowedDomains = $ AllowAllKnownDomains
4951 $BlockedDomains = @ ()
5052 }
5153 ' AllowSpecificExternal' {
@@ -72,26 +74,40 @@ function Invoke-CIPPStandardTeamsFederationConfiguration {
7274 }
7375 }
7476
75- # TODO : Add proper validation for the domain list
76- # $CurrentState.AllowedDomains returns a PSObject System.Object and adds a Domain= for each allowed domain, ex {Domain=example.com, Domain=example2.com}
77+ $CurrentAllowedDomains = $CurrentState.AllowedDomains
78+ if ($CurrentAllowedDomains.GetType ().Name -eq ' PSObject' ) {
79+ $CurrentAllowedDomains = $CurrentAllowedDomains.Domain | Sort-Object
80+ $DomainList = $CurrentAllowedDomains | Sort-Object
81+ $AllowedDomainsMatches = -not (Compare-Object - ReferenceObject $AllowedDomainsAsAList - DifferenceObject $DomainList )
82+ } elseif ($CurrentAllowedDomains.GetType ().Name -eq ' Deserialized.Microsoft.Rtc.Management.WritableConfig.Settings.Edge.AllowAllKnownDomains' ) {
83+ $CurrentAllowedDomains = $CurrentAllowedDomains.ToString ()
84+ $AllowedDomainsMatches = $CurrentAllowedDomains -eq $AllowedDomains.ToString ()
85+ }
86+
87+ $BlockedDomainsMatches = -not (Compare-Object - ReferenceObject $BlockedDomains - DifferenceObject $CurrentState.BlockedDomains )
7788
7889 $StateIsCorrect = ($CurrentState.AllowTeamsConsumer -eq $Settings.AllowTeamsConsumer ) -and
7990 ($CurrentState.AllowPublicUsers -eq $Settings.AllowPublicUsers ) -and
8091 ($CurrentState.AllowFederatedUsers -eq $AllowFederatedUsers ) -and
81- ( $CurrentState .AllowedDomains -eq $AllowedDomainsAsAList ) -and
82- ( $CurrentState .BlockedDomains -eq $BlockedDomains )
92+ $AllowedDomainsMatches -and
93+ $BlockedDomainsMatches
8394
8495 if ($Settings.remediate -eq $true ) {
8596 if ($StateIsCorrect -eq $true ) {
8697 Write-LogMessage - API ' Standards' - tenant $Tenant - message ' Federation Configuration already set.' - sev Info
8798 } else {
8899 $cmdparams = @ {
89- Identity = ' Global'
90- AllowTeamsConsumer = $Settings.AllowTeamsConsumer
91- AllowPublicUsers = $Settings.AllowPublicUsers
92- AllowFederatedUsers = $AllowFederatedUsers
93- AllowedDomainsAsAList = $AllowedDomainsAsAList
94- BlockedDomains = $BlockedDomains
100+ Identity = ' Global'
101+ AllowTeamsConsumer = $Settings.AllowTeamsConsumer
102+ AllowPublicUsers = $Settings.AllowPublicUsers
103+ AllowFederatedUsers = $AllowFederatedUsers
104+ BlockedDomains = $BlockedDomains
105+ }
106+
107+ if (! $AllowedDomainsAsAList ) {
108+ $cmdparams.AllowedDomains = $AllowedDomains
109+ } else {
110+ $cmdparams.AllowedDomainsAsAList = $AllowedDomainsAsAList
95111 }
96112
97113 try {
0 commit comments