SharePoint Online:使用 PowerShell 从网站中的所有组中删除用户
要求:从 SharePoint Online 网站集中的所有组中删除用户。
SharePoint Online:PowerShell 从所有组中删除用户
虽然可以通过用户界面管理 SharePoint Online 中的用户及其权限,但在处理大量用户和组时,管理员可能会变得乏味且耗时。幸运的是,管理员可以使用 PowerShell 脚本来自动化该过程并快速对用户权限进行批量更改。在本教程中,我们将向您展示如何使用 PowerShell 从 SharePoint Online 网站中的所有组中删除用户。当员工离开公司或更换部门,并且您需要快速撤销他们对敏感信息的访问权限时,这会派上用场。
此 PowerShell 脚本获取给定用户的所有组并将其从组中删除。
#Set Parameters
$AdminCenterURL="https://crescent-admin.sharepoint.com"
$SiteUrl = "https://crescent.sharepoint.com/sites/marketing"
$UserLoginID = "i:0#.f|membership|salaudeen@crescent.com"
#Connect to SharePoint Online
Connect-SPOService -Url $AdminCenterURL -credential (Get-Credential)
#Get All Groups of the User
$UserGroups = Get-SPOUser -LoginName $UserLoginID -Site $SiteURL | Select -ExpandProperty Groups
#Remove User from all Groups
$UserGroups | ForEach-Object { Remove-SPOUser -Group $_ -Site $SiteUrl -LoginName $UserLoginID}
在 SharePoint Online Management Shell 中运行此脚本。这将从用户添加到的任何组中删除用户,包括网站所有者组的成员(但不是网站集管理员!)。如果您需要从 SharePoint Online 组中删除用户,可以参考如何使用 PowerShell 从 SharePoint Online 组中删除用户?
使用 PowerShell CSOM 从所有组中删除用户
站点管理员可以使用此 CSOM PowerShell 来管理站点用户和组。让我向您展示如何使用 PowerShell 从给定 SharePoint Online 网站的所有组中删除用户。
#Load SharePoint Online Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Function to remove all users from a group
Function Remove-UserFromAllGroups()
{
param
(
[Parameter(Mandatory=$true)] [string] $SiteURL,
[Parameter(Mandatory=$true)] [string] $UserID
)
Try {
$Cred= Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get all Groups from the site
$Groups=$Ctx.web.SiteGroups
$Ctx.Load($Groups)
$Ctx.ExecuteQuery()
#Iterate through Each Group
Foreach($Group in $Groups)
{
#Get all users from the group
$Ctx.Load($Group.Users)
$Ctx.ExecuteQuery()
ForEach($User in $Group.Users)
{
If($User.LoginName -eq $UserID)
{
$Group.Users.RemoveByLoginName($User.LoginName)
Write-host "User Removed from Group:"$Group.Title -ForegroundColor Green
}
}
$Ctx.ExecuteQuery()
}
}
Catch {
write-host -f Red "Error Removing All Users from Group!" $_.Exception.Message
}
}
#Set parameter values
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$UserID= "i:0#.f|membership|salaudeen@crescent.com"
#Call the function to remove user from all groups
Remove-UserFromAllGroups -SiteURL $SiteURL -UserID $UserID
PnP PowerShell 从站点中的所有组中删除用户
SharePoint Online 管理员可以使用 PowerShell 从网站中的所有组中快速删除用户。只需几行脚本,您就可以将用户从所有组中删除,然后从站点中删除。如果您出于安全原因或其他原因需要快速从所有组中删除用户,这会很有帮助。
如果您需要快速将某人从站点中所属的所有组中删除,请使用以下方便的 PnP PowerShell 脚本:
#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$UserLoginID = "i:0#.f|membership|salaudeen@crescent.com"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get All Groups of the User
$UserGroups = Get-PnPUser -Identity $UserLoginID | Select -ExpandProperty Groups | Where {$_.Title -notmatch "Limited Access*"}
#Remove User from all Groups
$UserGroups | ForEach-Object { Remove-PnPGroupMember -LoginName $UserLoginID -Identity $_.Title }
除了组权限之外,用户还可能对站点中的对象拥有直接权限。如果要从网站集中完全删除用户,请使用:如何使用 PowerShell 从 SharePoint Online 网站集中删除用户?
结论
通过使用 PowerShell 脚本,管理员可以简化在 SharePoint Online 中管理用户和权限的过程。从站点上的所有组中删除用户可以快速高效地完成,从而节省时间并降低手动错误的风险。无论您是与一个用户还是多个用户打交道,此过程都可以自动化,以便在几分钟内进行批量更改。
总之,使用 PowerShell 从 SharePoint Online 网站中的所有组中删除用户是管理用户权限的有效且高效的方法。通过几个简单的步骤,管理员可以轻松保证 SharePoint 环境的安全,并确保只有授权用户才能访问敏感信息。
