尝试使用Powershell将所有团队及其所有者、成员和来宾放入CSV中

尝试使用Powershell将所有团队及其所有者、成员和来宾放入CSV中,powershell,microsoft-teams,Powershell,Microsoft Teams,我正在编写一个脚本,该脚本允许我通过Id获取所有团队组,并列出Id、姓名、所有者、成员和来宾 代码工作到一定程度,我得到了所有需要的信息,但它似乎限制了2个所有者,4个成员和没有客人 当我运行代码并将其添加到PSObject,然后简单地执行写主机操作时,所有数据都在那里,但我无法将其正确附加到CSV 下面的代码,要么是PSObject的限制,要么是我做错了什么/遗漏了什么(希望在第二部分;) 如果能够解决这个问题,我需要使用-join添加其他用户:) 工作代码: try { $host.

我正在编写一个脚本,该脚本允许我通过Id获取所有团队组,并列出Id、姓名、所有者、成员和来宾

代码工作到一定程度,我得到了所有需要的信息,但它似乎限制了2个所有者,4个成员和没有客人

当我运行代码并将其添加到PSObject,然后简单地执行写主机操作时,所有数据都在那里,但我无法将其正确附加到CSV

下面的代码,要么是PSObject的限制,要么是我做错了什么/遗漏了什么(希望在第二部分;)


如果能够解决这个问题,我需要使用-join添加其他用户:)

工作代码:

try
{
    $host.Runspace.ThreadOptions = "ReuseThread"

    # Get the credentials  
    Connect-AzureAD
 
    # Connect to Microsoft Teams  
    Connect-MicrosoftTeams
 
    # Get all the teams from tenant
    [array]$teamColl = $null 
    [array]$ownerColl = $null
    [array]$memberColl = $null
    [array]$guestColl = $null

    $teamColl=Get-Team

    $date = Get-Date -Format "yyyy-MM-dd"
    $OutputFile01 = "C:\temp\GetTeamsOwnersAndMembers-$date.csv"

    # Clean file
    Remove-Item $OutputFile01 -ErrorAction SilentlyContinue

    $GroupsCSV=@()

    Write-Host -ForegroundColor Green "Processing Groups"

    # Loop through the teams  
    foreach($team in $teamColl)  
    {
        $ownerCount = 0
        $memberCount = 0
        $guestCount = 0

        Write-Host -ForegroundColor Yellow -NoNewline "."
        $ownerColl = Get-TeamUser -GroupId $team.GroupId -Role Owner
        $ownerCollection=@()
        # Loop through the owners
        foreach($owner in $ownerColl)
        {
            $ownerCount++
            $ownerCollection += $owner.User
        }

        $memberColl = Get-TeamUser -GroupId $team.GroupId -Role Member
        $memberCollection=@()
        # Loop through the members
        foreach($member in $memberColl)
        {
            $memberCount++
            $memberCollection += $member.User
        }

        $guestColl = Get-TeamUser -GroupId $team.GroupId -Role Guest
        $guestCollection=@()
        # Loop through the guests
        foreach($guest in $guestColl)
        {
            $guestCount++
            $guestCollection += $guest.User
        }

        # Create CSV file line
        $GroupsRow = [pscustomobject]@{
            GroupId = $team.GroupId
            Name = $team.DisplayName
            OwnerCount = $ownerCount
            MemberCount = $memberCount
            GuestCount = $guestCount
            Owners = $ownerCollection -join " | "
            Members = $memberCollection -join " | "
            Guests = $guestCollection -join " | "
        }

        # Add to export array
        $GroupsCSV+=$GroupsRow
    }

    # Export to CSV
    Write-Host -ForegroundColor Green "`nCreating and exporting CSV file"
    $GroupsCSV | Export-Csv -NoTypeInformation -Path $OutputFile01
}

catch [System.Exception] 
{ 
    Write-Host -ForegroundColor Red $_.Exception.ToString()    
}

finally
{
    Write-Host "Done"
}

这是否回答了你的问题:?作为旁注:尽量避免,因为它是指数级的昂贵。
try
{
    $host.Runspace.ThreadOptions = "ReuseThread"

    # Get the credentials  
    Connect-AzureAD
 
    # Connect to Microsoft Teams  
    Connect-MicrosoftTeams
 
    # Get all the teams from tenant
    [array]$teamColl = $null 
    [array]$ownerColl = $null
    [array]$memberColl = $null
    [array]$guestColl = $null

    $teamColl=Get-Team

    $date = Get-Date -Format "yyyy-MM-dd"
    $OutputFile01 = "C:\temp\GetTeamsOwnersAndMembers-$date.csv"

    # Clean file
    Remove-Item $OutputFile01 -ErrorAction SilentlyContinue

    $GroupsCSV=@()

    Write-Host -ForegroundColor Green "Processing Groups"

    # Loop through the teams  
    foreach($team in $teamColl)  
    {
        $ownerCount = 0
        $memberCount = 0
        $guestCount = 0

        Write-Host -ForegroundColor Yellow -NoNewline "."
        $ownerColl = Get-TeamUser -GroupId $team.GroupId -Role Owner
        $ownerCollection=@()
        # Loop through the owners
        foreach($owner in $ownerColl)
        {
            $ownerCount++
            $ownerCollection += $owner.User
        }

        $memberColl = Get-TeamUser -GroupId $team.GroupId -Role Member
        $memberCollection=@()
        # Loop through the members
        foreach($member in $memberColl)
        {
            $memberCount++
            $memberCollection += $member.User
        }

        $guestColl = Get-TeamUser -GroupId $team.GroupId -Role Guest
        $guestCollection=@()
        # Loop through the guests
        foreach($guest in $guestColl)
        {
            $guestCount++
            $guestCollection += $guest.User
        }

        # Create CSV file line
        $GroupsRow = [pscustomobject]@{
            GroupId = $team.GroupId
            Name = $team.DisplayName
            OwnerCount = $ownerCount
            MemberCount = $memberCount
            GuestCount = $guestCount
            Owners = $ownerCollection -join " | "
            Members = $memberCollection -join " | "
            Guests = $guestCollection -join " | "
        }

        # Add to export array
        $GroupsCSV+=$GroupsRow
    }

    # Export to CSV
    Write-Host -ForegroundColor Green "`nCreating and exporting CSV file"
    $GroupsCSV | Export-Csv -NoTypeInformation -Path $OutputFile01
}

catch [System.Exception] 
{ 
    Write-Host -ForegroundColor Red $_.Exception.ToString()    
}

finally
{
    Write-Host "Done"
}