internal/functions/invoke-adoteammembermigration.ps1
|
<# .SYNOPSIS Migrates team members from source team to target team. .DESCRIPTION Internal helper function to migrate team members between teams. This requires additional permissions and API calls to manage team memberships. .PARAMETER SourceOrganization Source Azure DevOps organization name. .PARAMETER TargetOrganization Target Azure DevOps organization name. .PARAMETER SourceProjectName Source project name or ID. .PARAMETER TargetProjectName Target project name or ID. .PARAMETER SourceToken Source organization Personal Access Token (PAT). .PARAMETER TargetToken Target organization Personal Access Token (PAT). .PARAMETER SourceTeamId Source team ID or name. .PARAMETER TargetTeamId Target team ID or name. .PARAMETER ApiVersion API version to use (default: 7.2-preview.3). .EXAMPLE Invoke-ADOTeamMemberMigration -SourceOrganization "contoso" -TargetOrganization "fabrikam" -SourceProjectName "WebApp" -TargetProjectName "WebApp-New" -SourceToken $sourcePat -TargetToken $targetPat -SourceTeamId "team1-id" -TargetTeamId "team1-new-id" Migrates team members from source team to target team. .NOTES Author: Oleksandr Nikolaiev (@onikolaiev) This is a placeholder implementation that requires additional API endpoints: - GET https://dev.azure.com/{organization}/_apis/projects/{projectId}/teams/{teamId}/members - POST https://dev.azure.com/{organization}/_apis/projects/{projectId}/teams/{teamId}/members/{userId} .LINK https://learn.microsoft.com/azure/devops/organizations/security/about-permissions #> function Invoke-ADOTeamMemberMigration { [CmdletBinding()] [OutputType([hashtable])] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '')] param( [Parameter(Mandatory)][string]$SourceOrganization, [Parameter(Mandatory)][string]$TargetOrganization, [Parameter(Mandatory)][string]$SourceProjectName, [Parameter(Mandatory)][string]$TargetProjectName, [Parameter(Mandatory)][string]$SourceToken, [Parameter(Mandatory)][string]$TargetToken, [Parameter(Mandatory)][string]$SourceTeamId, [Parameter(Mandatory)][string]$TargetTeamId, [Parameter(Mandatory)][string]$ApiVersion ) begin { Write-PSFMessage -Level Verbose -Message "Starting team member migration for team '$SourceTeamId' to '$TargetTeamId'..." $memberStats = @{ Migrated = 0 Errors = 0 } } process { try { # Note: Team member migration requires additional API endpoints and permissions # This is a placeholder implementation that would need to use: # - GET https://dev.azure.com/{organization}/_apis/projects/{projectId}/teams/{teamId}/members # - POST https://dev.azure.com/{organization}/_apis/projects/{projectId}/teams/{teamId}/members/{userId} Write-PSFMessage -Level Warning -Message "Team member migration is not yet fully implemented. This feature requires additional API endpoints and permissions." # Future implementation would: # 1. Get source team members using GET /teams/{teamId}/members # 2. For each member, add them to target team using POST /teams/{teamId}/members/{userId} # 3. Handle errors and track statistics } catch { Write-PSFMessage -Level Error -Message "Error during team member migration: $($_.Exception.Message)" $memberStats.Errors++ } } end { Write-PSFMessage -Level Verbose -Message "Team member migration completed. Migrated: $($memberStats.Migrated), Errors: $($memberStats.Errors)" return $memberStats } } |