Microsoft团队:将成员从一个Teams组迁移到另一个

交联的

我有两个Teams组,我想将所有成员从源移动到目标Teams组(并且实际上仅迁移那些不在目标组中的成员)。另外,我希望能够备份以及从源组中删除成员。

如何使用PowerShell执行此操作?

交联的

MicrosoftTeams PowerShell模块提供了实现这种迁移的必要命令(请参阅https://docs.microsoft.com/zh-cn/microsoftteams/teams-powershell-overviewhttps://docs.microsoft.com/zh-我们/ powershell /模块/团队/?view = teams-ps)。

这里是执行迁移的脚本:

# Parameters
$sourceTeamsGroupName = "xxx"
$targetTeamsGroupName = "xxx"
$deleteUsersFromSourceTeamsGroup = $true
$backupFilePathSourceMembers = "C:\xxx\migrate-members\Teams_Source_Members_Backup.csv"
$backupFilePathTargetMembers = "C:\xxx\migrate-members\Teams_Target_Members_Backup.csv"
$backupFilePathTargetOwners = "C:\xxx\Teams_Target_Owners_Backup.csv"


# Install PS Teams module
$moduleName = "MicrosoftTeams"
if (Get-Module -Name $moduleName -ListAvailable) {
    $toUpdate = Read-Host "Module '$moduleName' is available, do you want to update it? (yes/no)"
    if ($toUpdate.Trim().ToLower() -eq "yes") {
        Update-Module $moduleName -Force
    }
} else {
    Write-Host "Installing module '$moduleName'..."
    Install-Module $moduleName -Scope CurrentUser -Force
}

Write-Host "Checked module '$moduleName'..."


# Login
Connect-MicrosoftTeams


# Get members of source
$sourceTeamsGroupId = (Get-Team -DisplayName $sourceTeamsGroupName).GroupId
$sourceTeamsGroupMembers = Get-TeamUser -GroupId $sourceTeamsGroupId -Role Member


# Backup list of source members to csv
$sourceTeamsGroupMembers | Export-Csv -Path $backupFilePathSourceMembers -NoTypeInformation
Write-Host "Retrieved and backuped members of source Teams group '$sourceTeamsGroupName'..."


# Get users of target group
$targetTeamsGroupId = (Get-Team -DisplayName $targetTeamsGroupName).GroupId

$targetTeamsGroupMembersCurrent = Get-TeamUser -GroupId $targetTeamsGroupId -Role Member
$targetTeamsGroupOwnersCurrent = Get-TeamUser -GroupId $targetTeamsGroupId -Role Owner


# Backup list of target members and owners to csv
$targetTeamsGroupMembersCurrent | Export-Csv -Path $backupFilePathTargetMembers -NoTypeInformation
Write-Host "Retrieved and backuped members of target Teams group '$targetTeamsGroupName'..."

$targetTeamsGroupOwnersCurrent | Export-Csv -Path $backupFilePathTargetOwners -NoTypeInformation
Write-Host "Retrieved and backuped owners of target Teams group '$targetTeamsGroupName'..."


# Add members to target group
$targetTeamsGroupMembersTarget = $sourceTeamsGroupMembers | Where-Object { ($_.UserId -notin $targetTeamsGroupMembersCurrent.UserId) -and ($_.UserId -notin $targetTeamsGroupOwnersCurrent.UserId) }

$targetTeamsGroupMembersTarget | ForEach-Object {
    $userId = $_.UserId
    $userName = $_.User

    Add-TeamUser -GroupId $targetTeamsGroupId -User $userId -Role Member
    Write-Host "Added user '$userName' with role 'Member' to group '$targetTeamsGroupName'..."
}

Write-Host "Finished adding users, validating..."


# Validate
$targetTeamsGroupMembersCheck = Get-TeamUser -GroupId $targetTeamsGroupId -Role Member
$targetTeamsGroupOwnersCheck = Get-TeamUser -GroupId $targetTeamsGroupId -Role Owner
$targetTeamsGroupMembersDifference = $sourceTeamsGroupMembers | Where-Object { ($_.UserId -notin $targetTeamsGroupMembersCheck.UserId) -and ($_.UserId -notin $targetTeamsGroupOwnersCheck.UserId) }

if (($targetTeamsGroupMembersDifference | Measure-Object).Count -eq 0) {
    Write-Host "Validation successful..."
} else {
    Write-Host "Validation failed for: "
    $targetTeamsGroupMembersDifference | ForEach-Object {
        Write-Host $_.User
    }
    Write-Host ""
    throw "Validation failed..."
}


# Remove users from source group (if selected)
if ($deleteUsersFromSourceTeamsGroup) {
    $sourceTeamsGroupMembers | ForEach-Object {
        $userId = $_.UserId
        $userName = $_.User
        Remove-TeamUser -GroupId $sourceTeamsGroupId -User $userId
        Write-Host "Removed user '$userName' from group '$sourceTeamsGroupName'..."
    } 
}

Write-Host "Done..."

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将成员的所有权从一个结构转移到另一个结构?

将数据从一个装载迁移到另一个装载

从一个ORM迁移到另一个

Laravel 5.1从一个Ubuntu 14.04迁移到另一个

如何从一个Cloudfront发行版迁移到另一个

将数据从一个表迁移到另一个表

C ++将成员函数引用从一个类实例传递到另一个类实例

将成员添加到另一个域的组中

将Azure VMS从一个帐户的一个订阅迁移到另一个帐户的另一个订阅的最快方法

如何正确地将一组不断变化的文件从一个NAS迁移到另一个NAS?

将特定列(近 250 个)从一个 Excel 工作簿迁移到另一个

SQL根据条件将数据从一个表迁移到另一个表

从一个AWS Elasticsearch集群迁移到不同区域的另一个AWS ElasticSearch集群

将现有Windows安装从一个SSD迁移到另一个SSD的效果?

Visual Studio在线。将项目从一个帐户迁移到另一个帐户

使用Liquibase将数据库从一个版本迁移到另一个版本

如何将可引导的ubuntu安装从一个分区迁移到另一个分区

JIRA-如何将数据从一个问题迁移到另一个问题?

Django 将 ImageFiles 从一个应用程序迁移到另一个应用程序

将Google Cloud功能从一个项目迁移到GCP中的另一个项目?

将TFVC存储库从一个VSTS实例迁移到另一个VSTS实例

如何重命名Django应用并将数据从一个应用迁移到另一个

如何从一个厨师服务器迁移到另一个厨师服务器

[TFS 2015]:将用户从一个AD域迁移到另一个域

从一个仓库迁移到另一个仓库时保存提交历史

将软件包从一个fedora系统迁移到另一个

将iOS应用组迁移到另一个开发者帐户

将测试计划从一个团队项目移至另一个

一个如何将所有事务模板从一个SendGrid帐户迁移到另一个?