# Check Teams Policies againts UpdGRADE Mode # # 20190320 FC Initial Version param( $sipuser = $null # use sip-address tp filter ) $error.clear() Write-host "Check-TeamsPolicies: Start" write-host "Check for SfBOnline PowerShell" get-command get-csonlineuser -ErrorAction SilentlyContinue | out-null if (!$error) { write-host "User existing Exchange Online Session" } else { write-host "Connecting to SFb Online/Teams PowerShell" Import-Module SkypeOnlineConnector #$userCredential = Get-Credential #$sfbSession = New-CsOnlineSession -Credential $userCredential $sfbSession = New-CsOnlineSession Import-PSSession $sfbSession } write-host "Load TeamsMessagingPolicy" [hashtable]$TeamsMessagingPolicy=@{} get-csTeamsMessagingPolicy | foreach-object { $TeamsMessagingPolicy[$_.identity]=$_.AllowUserChat } write-host "Load TeamsCallingPolicy" [hashtable]$TeamsCallingPolicy=@{} get-csTeamsCallingPolicy | foreach-object { $TeamsCallingPolicy[$_.identity]=$_.AllowPrivateCalling } write-host "Load TeamsMeetingPolicy" [hashtable]$TeamsMeetingPolicy=@{} get-csTeamsMeetingPolicy | foreach-object { $TeamsMeetingPolicy[$_.identity]=($_ | Select-Object AllowPrivateMeetingScheduling,AllowChannelMeetingScheduling) } Write-Host "Collecting CSUsers" $csuserlist = get-csonlineuser $sipuser -resultsize unlimited | Where-Object {$_.sipaddress} write-host "Total CSUsers $($csuserlist.count)" Write-Host "Processing Users" foreach ($csuser in $csuserlist) { write-host "------------------------------------------------------------------------------" write-host "User:$($csuser.UserPrincipalName)" $result = [PSCustomObject][ordered]@{ UPN = $csuser.UserPrincipalName TeamsUpgradeEffectiveMode = $csuser.TeamsUpgradeEffectiveMode AllowUserChat = "" AllowUserChatok = $false AllowPrivateCalling = "" AllowPrivateCallingok = $false AllowPrivateMeetingScheduling = "" AllowPrivateMeetingSchedulingok = $false AllowChannelMeetingScheduling = "" AllowChannelMeetingSchedulingok = $false } write-host " Mode: $($csuser.TeamsUpgradeEffectiveMode)" switch ($csuser.TeamsUpgradeEffectiveMode) { "SfBOnly" { $validsetting = ($false,$false,$false,$false)} "SfBWithTeamsCollab" {$validsetting = ($false,$false,$false,$false)} "SfBWithTeamsCollabAndMeeting" {$validsetting = ($false,$false,$true,$true)} "TeamsOnly" {$validsetting = ($true,$true,$true,$true)} "Islands" {$validsetting = ($true,$true,$true,$true)} default {write-warning "Unknown TeamsUpgradeEffectiveMode $($csuser.TeamsUpgradeEffectiveMode)"} } if ($csuser.TeamsMessagingPolicy){ $TeamsMessagingPolicyname = "Tag:$($csuser.TeamsMessagingPolicy)" } else{ $TeamsMessagingPolicyname = "Global" } $result.AllowUserChat = $TeamsMessagingPolicy[$TeamsMessagingPolicyname] write-host " TeamsMessagingPolicyname:$($TeamsMessagingPolicyname) AllowUserChat:$($result.AllowUserChat):" -NoNewline if ($TeamsMessagingPolicy[$TeamsMessagingPolicyname] -eq $validsetting[0]) { write-host "OK" -ForegroundColor green $result.AllowUserChatok = $true } else { write-host "Bad" -BackgroundColor red } if ($csuser.TeamsCallingPolicy){ $TeamsCallingPolicyName = "Tag:$($csuser.TeamsCallingPolicy)" } else{ $TeamsCallingPolicyName = "Global" } $result.AllowPrivateCalling = $TeamsCallingPolicy[$TeamsCallingPolicyName] write-host " TeamsCallingPolicyName:$($TeamsCallingPolicyName) AllowPrivateCalling:$($result.AllowPrivateCalling):" -NoNewline if ($TeamsCallingPolicy[$TeamsCallingPolicyName] -eq $validsetting[1]) { write-host "OK" -ForegroundColor green $result.AllowPrivateCallingok = $true } else { write-host "Bad" -BackgroundColor red } if ($csuser.TeamsMeetingPolicy){ $TeamsMeetingPolicyName = "Tag:$($csuser.TeamsCallingPolicy)" } else{ $TeamsMeetingPolicyName = "Global" } $result.AllowPrivateMeetingScheduling = $TeamsMeetingPolicy[$TeamsMeetingPolicyName].AllowPrivateMeetingScheduling $result.AllowChannelMeetingScheduling = $TeamsMeetingPolicy[$TeamsMeetingPolicyName].AllowChannelMeetingScheduling write-host " TeamsMeetingPolicyName:$($TeamsMeetingPolicyName) AllowPrivateMeetingScheduling:$($result.AllowPrivateMeetingScheduling):" -NoNewline if ($TeamsMeetingPolicy[$TeamsMeetingPolicyName].AllowPrivateMeetingScheduling -eq $validsetting[2]) { write-host "OK" -ForegroundColor green $result.AllowPrivateMeetingSchedulingok = $true } else { write-host "Bad" -BackgroundColor red } write-host " TeamsMeetingPolicyName:$($TeamsMeetingPolicyName) AllowChannelMeetingScheduling:$($result.AllowChannelMeetingScheduling):" -NoNewline if ($TeamsMeetingPolicy[$TeamsMeetingPolicyName].AllowChannelMeetingScheduling -eq $validsetting[3]) { write-host "OK" -ForegroundColor green $result.AllowChannelMeetingSchedulingok=$true } else { write-host "Bad" -BackgroundColor red } write-host $result } Write-host "Check-TeamsPolicies: End"