







前言
最近,有一大波用户要加组
正文
1.还是先上截图压压惊,如下图:

2.添加组成功的截图,我这是测试只加了一个人,如下图:

3.这个是完整的PowerShell 命令,大家自己品,如下图:
<# .SYNOPSIS PowerShell 7专用 - 批量向SharePoint Online用户组添加用户 .DESCRIPTION 支持单个组/多个组批量加用户,校验用户/组有效性,适配MFA登录,兼容邮箱/用户ID两种格式 #> # -------------------------- 可配置变量(按需修改) -------------------------- $siteUrl = "https://linyus.sharepoint.com/sites/Develop" # SPO站点地址 # 场景1:单个组批量加用户(启用此场景则注释场景2) $targetGroupName = "Develop Members" # 目标用户组名称 $usersToAdd = @( "linyu@linyus.onmicrosoft.com" # 用户邮箱1 ) # 场景2:多个组批量加用户(启用此场景则注释场景1) <# $groupUserMapping = @( @{ GroupName = "站点成员" Users = @("user1@contoso.com", "user2@contoso.com") }, @{ GroupName = "文档编辑组" Users = @("user3@contoso.com", "user4@contoso.com") } ) #> # -------------------------- 核心函数:添加用户到指定组 -------------------------- function Add-PnPUserToGroupBatch { param( [Parameter(Mandatory)] [string]$SiteUrl, [Parameter(Mandatory)] [string]$GroupName, [Parameter(Mandatory)] [array]$UserList ) # 1. 校验目标用户组是否存在 $targetGroup = Get-PnPGroup -Identity $GroupName -ErrorAction SilentlyContinue if (-not $targetGroup) { Write-Host "❌ 用户组 '$GroupName' 不存在,跳过添加" -ForegroundColor Red return } Write-Host "📌 开始处理用户组: $GroupName (组ID: $($targetGroup.Id))" -ForegroundColor Cyan # 2. 批量添加用户 foreach ($user in $UserList) { try { # 校验用户是否有效(先获取用户信息) $spoUser = Get-PnPUser -Identity $user -ErrorAction Stop $userLogin = $spoUser.LoginName $userTitle = $spoUser.Title # 检查用户是否已在组中 if (Get-PnPGroupMember -Group $GroupName -User $userLogin) { Write-Host "ℹ️ 用户 '$userTitle ($user)' 已在组 '$GroupName' 中,跳过" -ForegroundColor Yellow continue } # 添加用户到组 Add-PnPGroupMember -LoginName $user -Group $targetGroup -ErrorAction Stop Write-Host "✅ 成功添加用户: $userTitle ($user) 到组 '$GroupName'" -ForegroundColor Green } catch { Write-Host "❌ 添加用户 '$user' 失败: $($_.Exception.Message)" -ForegroundColor Red continue } } } # -------------------------- 执行入口 -------------------------- # 1. 检查并安装PnP.PowerShell if (-not (Get-Module -ListAvailable -Name PnP.PowerShell)) { Write-Host "🔧 正在安装PnP.PowerShell模块..." -ForegroundColor Cyan Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction SilentlyContinue Install-Module -Name PnP.PowerShell -Force -AllowClobber -Scope CurrentUser -ErrorAction Stop } Import-Module PnP.PowerShell -DisableNameChecking -Force -ErrorAction Stop Write-Host "✅ PnP.PowerShell模块加载成功`n" -ForegroundColor Green # 2. 连接SPO站点 try { Write-Host "🔗 正在连接站点: $siteUrl" -ForegroundColor Cyan Connect-PnPOnline -Url $siteUrl -UseWebLogin -ErrorAction Stop Write-Host "✅ 站点连接成功`n" -ForegroundColor Green # 3. 执行批量添加逻辑 Write-Host "🚀 开始批量添加用户到用户组..." -ForegroundColor Green # 场景1:单个组批量加用户 if ($targetGroupName -and $usersToAdd) { Add-PnPUserToGroupBatch -SiteUrl $siteUrl -GroupName $targetGroupName -UserList $usersToAdd } # 场景2:多个组批量加用户(取消注释上方的$groupUserMapping即可启用) <# if ($groupUserMapping) { foreach ($mapping in $groupUserMapping) { $groupName = $mapping.GroupName $users = $mapping.Users Add-PnPUserToGroupBatch -SiteUrl $siteUrl -GroupName $groupName -UserList $users Write-Host "`n" -ForegroundColor White } } #> Write-Host "`n🎉 批量添加用户完成!" -ForegroundColor Green } catch { Write-Host "`n❌ 执行出错: $($_.Exception.Message)" -ForegroundColor Red exit 1 } finally { # 断开连接 if (Get-PnPConnection) { Disconnect-PnPOnline -ErrorAction SilentlyContinue Write-Host "`n🔌 已断开SPO站点连接" -ForegroundColor Cyan } }
结束语
PowerShell 命令,真的是谁用谁知道呀
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。