mirror of
https://github.com/admindroid-community/powershell-scripts.git
synced 2025-12-17 16:35:19 +00:00
Create TeamsReports.ps1
Microsoft teams reports
This commit is contained in:
parent
884f188feb
commit
bcb0b30129
299
Microsoft Teams Reports/TeamsReports.ps1
Normal file
299
Microsoft Teams Reports/TeamsReports.ps1
Normal file
@ -0,0 +1,299 @@
|
||||
#Accept input paramenters
|
||||
param(
|
||||
[string]$UserName,
|
||||
[string]$Password,
|
||||
[switch]$MFA,
|
||||
[int]$Action
|
||||
)
|
||||
|
||||
#Connect to Microsoft Teams
|
||||
$Module=Get-Module -Name MicrosoftTeams -ListAvailable
|
||||
if($Module.count -eq 0)
|
||||
{
|
||||
Write-Host MicrosoftTeams module is not available -ForegroundColor yellow
|
||||
$Confirm= Read-Host Are you sure you want to install module? [Y] Yes [N] No
|
||||
if($Confirm -match "[yY]")
|
||||
{
|
||||
Install-Module MicrosoftTeams
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host MicrosoftTeams module is required.Please install module using Install-Module MicrosoftTeams cmdlet.
|
||||
Exit
|
||||
}
|
||||
}
|
||||
Write-Host Importing Microsoft Teams module... -ForegroundColor Yellow
|
||||
#Autentication using MFA
|
||||
if($mfa.IsPresent)
|
||||
{
|
||||
$Team=Connect-MicrosoftTeams
|
||||
}
|
||||
|
||||
#Authentication using non-MFA
|
||||
else
|
||||
{
|
||||
#Storing credential in script for scheduling purpose/ Passing credential as parameter
|
||||
if(($UserName -ne "") -and ($Password -ne ""))
|
||||
{
|
||||
$SecuredPassword = ConvertTo-SecureString -AsPlainText $Password -Force
|
||||
$Credential = New-Object System.Management.Automation.PSCredential $UserName,$SecuredPassword
|
||||
$Team=Connect-MicrosoftTeams -Credential $Credential
|
||||
}
|
||||
else
|
||||
{
|
||||
$Team=Connect-MicrosoftTeams
|
||||
}
|
||||
}
|
||||
|
||||
#Check for Teams connectivity
|
||||
If($Team -ne $null)
|
||||
{
|
||||
Write-host `nSuccessfully connected to Microsoft Teams -ForegroundColor Green
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host Error occurred while creating Teams session. Please try again -ForegroundColor Red
|
||||
exit
|
||||
}
|
||||
|
||||
[boolean]$Delay=$false
|
||||
Do {
|
||||
if($Action -eq "")
|
||||
{
|
||||
if($Delay -eq $true)
|
||||
{
|
||||
Start-Sleep -Seconds 2
|
||||
}
|
||||
$Delay=$true
|
||||
Write-Host ""
|
||||
Write-host `nMicrosoft Teams Reporting -ForegroundColor Yellow
|
||||
Write-Host " 1.All Teams in organization" -ForegroundColor Cyan
|
||||
Write-Host " 2.All Teams members and owners report" -ForegroundColor Cyan
|
||||
Write-Host " 3.Specific Teams' members and Owners report" -ForegroundColor Cyan
|
||||
Write-Host " 4.All Teams' owners report" -ForegroundColor Cyan
|
||||
Write-Host " 5.Specific Teams' owners report" -ForegroundColor Cyan
|
||||
Write-Host `nTeams Channel Reporting -ForegroundColor Yellow
|
||||
Write-Host " 6.All channels in organization" -ForegroundColor Cyan
|
||||
Write-Host " 7.All channels in specific Team" -ForegroundColor Cyan
|
||||
Write-Host " 8.Members and Owners Report of Single Channel" -ForegroundColor Cyan
|
||||
Write-Host " 0.Exit" -ForegroundColor Cyan
|
||||
Write-Host `nPrivate Channel Management and Reporting -ForegroundColor Yellow
|
||||
Write-Host " You can download the script from https://blog.admindroid.com/managing-private-channels-in-microsoft-teams/" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
$i = Read-Host 'Please choose the action to continue'
|
||||
}
|
||||
else
|
||||
{
|
||||
$i=$Action
|
||||
}
|
||||
|
||||
Switch ($i) {
|
||||
1 {
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$Path="./All Teams Report_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Write-Host Exporting all Teams report...
|
||||
$Count=0
|
||||
Get-Team | foreach {
|
||||
$TeamName=$_.DisplayName
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName"
|
||||
$Count++
|
||||
$Visibility=$_.Visibility
|
||||
$MailNickName=$_.MailNickName
|
||||
$Description=$_.Description
|
||||
$Archived=$_.Archived
|
||||
$GroupId=$_.GroupId
|
||||
$ChannelCount=(Get-TeamChannel -GroupId $GroupId).count
|
||||
$TeamUser=Get-TeamUser -GroupId $GroupId
|
||||
$TeamMemberCount=$TeamUser.Count
|
||||
$TeamOwnerCount=($TeamUser | ?{$_.role -eq "Owner"}).count
|
||||
$Result=@{'Teams Name'=$TeamName;'Team Type'=$Visibility;'Mail Nick Name'=$MailNickName;'Description'=$Description;'Archived Status'=$Archived;'Channel Count'=$ChannelCount;'Team Members Count'=$TeamMemberCount;'Team Owners Count'=$TeamOwnerCount}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Teams Name','Team Type','Mail Nick Name','Description','Archived Status','Channel Count','Team Members Count','Team Owners Count' | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName" -Completed
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
2 {
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$Path="./All Teams Members and Owner Report_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Write-Host Exporting all Teams members and owners report...
|
||||
$Count=0
|
||||
Get-Team | foreach {
|
||||
$TeamName=$_.DisplayName
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName"
|
||||
$Count++
|
||||
$GroupId=$_.GroupId
|
||||
Get-TeamUser -GroupId $GroupId | foreach {
|
||||
$Name=$_.Name
|
||||
$MemberMail=$_.User
|
||||
$Role=$_.Role
|
||||
$Result=@{'Teams Name'=$TeamName;'Member Name'=$Name;'Member Mail'=$MemberMail;'Role'=$Role}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Teams Name','Member Name','Member Mail','Role' | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
}
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName" -Completed
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
3 {
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$TeamName=Read-Host Enter Teams name to get members report "(Case sensitive)":
|
||||
$GroupId=(Get-Team -DisplayName $TeamName).GroupId
|
||||
Write-Host Exporting $TeamName"'s" Members and Owners report...
|
||||
$Path=".\MembersOf $TeamName Team Report _$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Get-TeamUser -GroupId $GroupId | foreach {
|
||||
$Name=$_.Name
|
||||
$MemberMail=$_.User
|
||||
$Role=$_.Role
|
||||
$Result=@{'Member Name'=$Name;'Member Mail'=$MemberMail;'Role'=$Role}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Member Name','Member Mail','Role' | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
4 {
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$Path="./All Teams Owner Report_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Write-Host Exporting all Teams owner report...
|
||||
$Count=0
|
||||
Get-Team | foreach {
|
||||
$TeamName=$_.DisplayName
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName"
|
||||
$Count++
|
||||
$GroupId=$_.GroupId
|
||||
Get-TeamUser -GroupId $GroupId | ?{$_.role -eq "Owner"} | foreach {
|
||||
$Name=$_.Name
|
||||
$MemberMail=$_.User
|
||||
$Result=@{'Teams Name'=$TeamName;'Owner Name'=$Name;'Owner Mail'=$MemberMail}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Teams Name','Owner Name','Owner Mail' | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
}
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName" -Completed
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
5 {
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$TeamName=Read-Host Enter Teams name to get owners report "(Case sensitive)":
|
||||
$GroupId=(Get-Team -DisplayName $TeamName).GroupId
|
||||
Write-Host Exporting $TeamName team"'"s Owners report...
|
||||
$Path=".\OwnersOf $TeamName team report_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Get-TeamUser -GroupId $GroupId | ?{$_.role -eq "Owner"} | foreach {
|
||||
$Name=$_.Name
|
||||
$MemberMail=$_.User
|
||||
$Result=@{'Member Name'=$Name;'Member Mail'=$MemberMail}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Member Name','Member Mail' | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
6 {
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$Path="./All Channels Report_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Write-Host Exporting all Channels report...
|
||||
$Count=0
|
||||
Get-Team | foreach {
|
||||
$TeamName=$_.DisplayName
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing Team: $TeamName "
|
||||
$Count++
|
||||
$GroupId=$_.GroupId
|
||||
Get-TeamChannel -GroupId $GroupId | foreach {
|
||||
$ChannelName=$_.DisplayName
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing Team: $TeamName "`n" Currently Processing Channel: $ChannelName"
|
||||
$MembershipType=$_.MembershipType
|
||||
$Description=$_.Description
|
||||
$ChannelUser=Get-TeamChannelUser -GroupId $GroupId -DisplayName $ChannelName
|
||||
$ChannelMemberCount=$ChannelUser.Count
|
||||
$ChannelOwnerCount=($ChannelUser | ?{$_.role -eq "Owner"}).count
|
||||
$Result=@{'Teams Name'=$TeamName;'Channel Name'=$ChannelName;'Membership Type'=$MembershipType;'Description'=$Description;'Total Members Count'=$ChannelMemberCount;'Owners Count'=$ChannelOwnerCount}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Teams Name','Channel Name','Membership Type','Description','Owners Count','Total Members Count' | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
}
|
||||
Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName `n Currently Processing Channel: $ChannelName" -Completed
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
7 {
|
||||
$TeamName=Read-Host Enter Teams name "(Case Sensitive)"
|
||||
Write-Host Exporting Channels report...
|
||||
$Count=0
|
||||
$GroupId=(Get-Team -DisplayName $TeamName).GroupId
|
||||
$Path=".\Channels available in $TeamName team $((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Get-TeamChannel -GroupId $GroupId | Foreach {
|
||||
$ChannelName=$_.DisplayName
|
||||
Write-Progress -Activity "`n Processed channel count: $Count "`n" Currently Processing Channel: $ChannelName"
|
||||
$Count++
|
||||
$MembershipType=$_.MembershipType
|
||||
$Description=$_.Description
|
||||
$ChannelUser=Get-TeamChannelUser -GroupId $GroupId -DisplayName $ChannelName
|
||||
$ChannelMemberCount=$ChannelUser.Count
|
||||
$ChannelOwnerCount=($ChannelUser | ?{$_.role -eq "Owner"}).count
|
||||
$Result=@{'Teams Name'=$TeamName;'Channel Name'=$ChannelName;'Membership Type'=$MembershipType;'Description'=$Description;'Total Members Count'=$ChannelMemberCount;'Owners Count'=$ChannelOwnerCount}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Teams Name','Channel Name','Membership Type','Description','Owners Count','Total Members Count' | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
Write-Progress -Activity "`n Processed channel count: $Count "`n" Currently Processing Channel: $ChannelName" -Completed
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
8 {
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$TeamName=Read-Host Enter Teams name in which Channel resides "(Case sensitive)"
|
||||
$ChannelName=Read-Host Enter Channel name
|
||||
$GroupId=(Get-Team -DisplayName $TeamName).GroupId
|
||||
Write-Host Exporting $ChannelName"'s" Members and Owners report...
|
||||
$Path=".\MembersOf $ChannelName channel report $((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
Get-TeamChannelUser -GroupId $GroupId -DisplayName $ChannelName | foreach {
|
||||
$Name=$_.Name
|
||||
$UPN=$_.User
|
||||
$Role=$_.Role
|
||||
$Result=@{'Teams Name'=$TeamName;'Channel Name'=$ChannelName;'Member Mail'=$UPN;'Member Name'=$Name;'Role'=$Role}
|
||||
$Results= New-Object psobject -Property $Result
|
||||
$Results | select 'Teams Name','Channel Name','Member Name','Member Mail',Role | Export-Csv $Path -NoTypeInformation -Append
|
||||
}
|
||||
if((Test-Path -Path $Path) -eq "True")
|
||||
{
|
||||
Write-Host `nReport available in $Path -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if($Action -ne "")
|
||||
{exit}
|
||||
}
|
||||
While ($i -ne 0)
|
||||
Clear-Host
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user