|
| 1 | +function Invoke-CIPPStandardTeamsGuestAccess { |
| 2 | + <# |
| 3 | + .FUNCTIONALITY |
| 4 | + Internal |
| 5 | + .COMPONENT |
| 6 | + (APIName) TeamsGuestAccess |
| 7 | + .SYNOPSIS |
| 8 | + (Label) Allow guest users in Teams |
| 9 | + .DESCRIPTION |
| 10 | + (Helptext) Allow guest users access to teams. |
| 11 | + (DocsDescription) Allow guest users access to teams. Guest users are users who are not part of your organization but have been invited to collaborate with your organization in Teams. This setting allows you to control whether guest users can access Teams. |
| 12 | + .NOTES |
| 13 | + CAT |
| 14 | + Teams Standards |
| 15 | + TAG |
| 16 | + ADDEDCOMPONENT |
| 17 | + {"type":"switch","name":"standards.TeamsGuestAccess.AllowGuestUser","label":"Allow guest users"} |
| 18 | + IMPACT |
| 19 | + Low Impact |
| 20 | + ADDEDDATE |
| 21 | + 2025-06-03 |
| 22 | + POWERSHELLEQUIVALENT |
| 23 | + Set-CsTeamsClientConfiguration -AllowGuestUser \$true |
| 24 | + RECOMMENDEDBY |
| 25 | + UPDATECOMMENTBLOCK |
| 26 | + Run the Tools\Update-StandardsComments.ps1 script to update this comment block |
| 27 | + .LINK |
| 28 | + https://docs.cipp.app/user-documentation/tenant/standards/list-standards |
| 29 | + #> |
| 30 | + |
| 31 | + param($Tenant, $Settings) |
| 32 | + |
| 33 | + $CurrentState = New-TeamsRequest -TenantFilter $Tenant -Cmdlet 'Get-CsTeamsClientConfiguration' -CmdParams @{Identity = 'Global' } | Select-Object AllowGuestUser |
| 34 | + |
| 35 | + if ($null -eq $Settings.AllowGuestUser) { $Settings.AllowGuestUser = $false } |
| 36 | + |
| 37 | + $StateIsCorrect = ($CurrentState.AllowGuestUser -eq $Settings.AllowGuestUser) |
| 38 | + |
| 39 | + if ($Settings.remediate -eq $true) { |
| 40 | + if ($StateIsCorrect -eq $true) { |
| 41 | + Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Teams Guest Access already set.' -sev Info |
| 42 | + } else { |
| 43 | + $cmdParams = @{ |
| 44 | + Identity = 'Global' |
| 45 | + AllowGuestUser = $Settings.AllowGuestUser |
| 46 | + } |
| 47 | + |
| 48 | + try { |
| 49 | + New-TeamsRequest -TenantFilter $Tenant -Cmdlet 'Set-CsTeamsClientConfiguration' -CmdParams $cmdParams |
| 50 | + Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Updated Teams Guest Access settings' -sev Info |
| 51 | + } catch { |
| 52 | + $ErrorMessage = Get-NormalizedError -Message $_.Exception.Message |
| 53 | + Write-LogMessage -API 'Standards' -tenant $Tenant -message "Failed to set Teams Guest Access settings. Error: $ErrorMessage" -sev Error |
| 54 | + } |
| 55 | + } |
| 56 | + } |
| 57 | + |
| 58 | + if ($Settings.alert -eq $true) { |
| 59 | + if ($StateIsCorrect -eq $true) { |
| 60 | + Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Teams Guest Access settings is set correctly.' -sev Info |
| 61 | + } else { |
| 62 | + Write-StandardsAlert -message 'Teams Guest Access settings is not set correctly.' -object $CurrentState -tenant $Tenant -standardName 'TeamsGuestAccess' -standardId $Settings.standardId |
| 63 | + Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Teams Guest Access settings is not set correctly.' -sev Info |
| 64 | + } |
| 65 | + } |
| 66 | + |
| 67 | + if ($Settings.report -eq $true) { |
| 68 | + if ($StateIsCorrect) { |
| 69 | + $FieldValue = $true |
| 70 | + } else { |
| 71 | + $FieldValue = $CurrentState |
| 72 | + } |
| 73 | + Set-CIPPStandardsCompareField -FieldName 'standards.TeamsGuestAccess' -FieldValue $FieldValue -Tenant $Tenant |
| 74 | + Add-CIPPBPAField -FieldName 'TeamsGuestAccess' -FieldValue $StateIsCorrect -StoreAs bool -Tenant $Tenant |
| 75 | + |
| 76 | + } |
| 77 | +} |
0 commit comments