SharePoint Online: Felhasználó vagy csoport eltávolítása a mappaengedélyekből a PowerShell segítségével
Követelmény: Távolítsa el a felhasználót a SharePoint Online mappaengedélyei közül.
Hogyan távolíthat el egy felhasználót a SharePoint Online mappaengedélyeiből?
Korlátozni szeretné a hozzáférést egy mappához a SharePoint Online-ban? Ez a blogbejegyzés bemutatja, hogyan távolíthat el egy felhasználókat vagy csoportokat a SharePoint Online mappaengedélyei közül. Azt is látni fogjuk, hogy a PowerShell gyorsan visszavonja egy adott felhasználó hozzáférését egy mappából.
Ha el szeretne távolítani egy felhasználót vagy csoportot a SharePoint Online Mappa engedélyei közül, kövesse az alábbi lépéseket:
- Keresse meg a SharePoint Online listát vagy tárat, ahol a célmappa található.
- Kattintson a „Részletek” elemre az adott mappa helyi menüjében >> A Részletek panelen kattintson a „Hozzáférés kezelése”, majd a „Speciális” hivatkozásokra. Ezzel a „Speciális engedélyek” oldalra jut.
A szalagon kattintson a „Stop Inhering Permissions” gombra, és erősítse meg a felszólítást.
- Most megkapja azon felhasználók és csoportok listáját, akik jogosultak a mappára. Ha megszegi az engedélyt, a SharePoint átmásolja az engedélyeket a szülőjétől (esetünkben a lista/könyvtár!)
-
Válassza ki azokat a felhasználókat és csoportokat, amelyek engedélyét el szeretné távolítani a mappából, és erősítse meg a kérést.
- Ez minden. Eltávolítottuk a felhasználókat a mappaengedélyekből.
Felhasználó eltávolítása a mappaengedélyekből a PowerShell segítségével
Íme a PowerShell a felhasználói engedélyek eltávolításához a SharePoint Online egy mappájából:
#Load SharePoint CSOM 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 Remove-SPOUserPermissionsFromList()
{
param
(
[Parameter(Mandatory=$true)] [string] $SiteURL,
[Parameter(Mandatory=$true)] [string] $FolderURL,
[Parameter(Mandatory=$true)] [string] $UserAccount
)
Try {
#Get credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
$Web = $Ctx.web
#Get the Folder
$Folder = $Web.GetFolderByServerRelativeUrl($FolderURL)
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Break Permission inheritence - Keep all existing list permissions & Don't keep Item level permissions
$Folder.ListItemAllFields.BreakRoleInheritance($True,$False)
$Ctx.ExecuteQuery()
Write-host -f Yellow "Folder's Permission inheritance broken..."
#Get the SharePoint User object from the site
$User = $Web.EnsureUser($UserAccount)
$Ctx.load($User)
#Get permissions assigned to the folder
$Ctx.Load($Folder.ListItemAllFields.RoleAssignments)
$Ctx.ExecuteQuery()
#Check if the user has permission on the list
[Bool]$UserFound = $False
ForEach($RoleAssignment in $Folder.ListItemAllFields.RoleAssignments)
{
$ctx.Load($RoleAssignment.Member)
$Ctx.ExecuteQuery()
#remove user permission from folder
If($RoleAssignment.Member.LoginName -eq $User.LoginName)
{
$Folder.ListItemAllFields.RoleAssignments.GetByPrincipal($User).DeleteObject()
$Ctx.ExecuteQuery()
$UserFound = $True
Write-host "User Permissions Removed from the List Successfully!" -ForegroundColor Green
}
}
#If user doesn't exist in list permissions
If($UserFound -eq $False) { Write-host "User Not found in List Permissions!" -ForegroundColor Red}
}
Catch {
write-host -f Red "Error Removing permissions from the Folder!" $_.Exception.Message
}
}
#Config Variables
$SiteURL="https://crescent.sharepoint.com"
$FolderURL="/Project Docs/Active"
$UserAccount="Salaudeen@Crescent.com"
#Call the function to remove user permissions from a list
Remove-SPOUserPermissionsFromList -SiteURL $SiteURL -FolderURL $FolderURL -UserAccount $UserAccount
Ez a PowerShell eltávolítja a felhasználót a megadott paraméterek mappaengedélyeiből.
Csoport eltávolítása a mappaengedélyekből a PowerShell segítségével
Hasonlóképpen, ezzel a PowerShell-szkripttel távolíthat el egy SharePoint-csoportot a mappa engedélyei közül.
#Load SharePoint CSOM 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 Remove-SPOGroupPermissionsFromList()
{
param
(
[Parameter(Mandatory=$true)] [string] $SiteURL,
[Parameter(Mandatory=$true)] [string] $FolderURL,
[Parameter(Mandatory=$true)] [string] $GroupName
)
Try {
#Get credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
$Web = $Ctx.web
#Get the Folder
$Folder = $Web.GetFolderByServerRelativeUrl($FolderURL)
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Break Permission inheritence - Keep all existing list permissions & Don't keep Item level permissions
$Folder.ListItemAllFields.BreakRoleInheritance($True,$False)
$Ctx.ExecuteQuery()
Write-host -f Yellow "Folder's Permission inheritance broken..."
#Get the SharePoint Site Group object
$Group =$Web.SiteGroups.GetByName($GroupName)
$Ctx.load($Group)
#Get permissions assigned to the folder
$Ctx.Load($Folder.ListItemAllFields.RoleAssignments)
$Ctx.ExecuteQuery()
#Check if the Group has permission on the list
[Bool]$GroupFound = $False
ForEach($RoleAssignment in $Folder.ListItemAllFields.RoleAssignments)
{
$ctx.Load($RoleAssignment.Member)
$Ctx.ExecuteQuery()
#remove Group permission from folder
If($RoleAssignment.Member.LoginName -eq $Group.LoginName)
{
$Folder.ListItemAllFields.RoleAssignments.GetByPrincipal($Group).DeleteObject()
$Ctx.ExecuteQuery()
$GroupFound = $True
Write-host "Group Permissions Removed from the List Successfully!" -ForegroundColor Green
}
}
#If Group doesn't exist in list permissions
If($GroupFound -eq $False) { Write-host "Group Not found in List Permissions!" -ForegroundColor Red}
}
Catch {
write-host -f Red "Error Removing Group permissions from the Folder!" $_.Exception.Message
}
}
#Config Variables
$SiteURL="https://crescent.sharepoint.com"
$FolderURL="/Project Docs/Active"
$GroupName="Team Site Visitors"
#Call the function to remove Group permissions from a list
Remove-SPOGroupPermissionsFromList -SiteURL $SiteURL -FolderURL $FolderURL -GroupName $GroupName
Ez eltávolítja a SharePoint Online csoportot a PowerShell segítségével a mappaengedélyekből. Íme egy másik bejegyzés a SharePoint Online Mappa engedélyének megadásáról PowerShell használatával: Mappaengedélyek beállítása a SharePoint Online-ban a PowerShell segítségével
PnP PowerShell a felhasználó eltávolításához a mappák engedélyei közül egy CSV-fájlból
Van egy CSV-fájlunk az URL-ek listájával, és el szeretnénk távolítani egy adott felhasználót az összes mappából. A CSV-fájlnak csak egy oszlopa van az „URL” fejléccel és több mint 100 sor.
#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/legal"
$ListName="Work"
$CSVFile = "C:\Temp\Folders.csv"
$UserAccount = "i:0#.f|membership|steve@crescent.com"
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get content from CSV file
Import-Csv $CSVFile | ForEach-Object {
Write-host "Processing Folder:"$_.URL
#Get the Folder from URL
$Folder = Get-PnPFolder -Url $_.URL
#Get Folder Item
$FolderItem = Get-PnPProperty -ClientObject $Folder -Property ListItemAllFields
$HasUniquePerm = Get-PnPProperty -ClientObject $FolderItem -Property HasUniqueRoleAssignments
#Break Permission Inheritance
If(!$HasUniquePerm)
{
$FolderItem.BreakRoleInheritance($True, $True)
Write-host "`tFolder's Permission Inheritance Broken!"
}
#Get the User
$User = Get-PnPUser -Identity $UserAccount -ErrorAction Stop
#Get Permissions from the Folder
$RoleAssignments = Get-PnPProperty -ClientObject $FolderItem -Property RoleAssignments
#Remove user from folder permissions
[Bool]$UserFound = $false
ForEach($RoleAssignment in $RoleAssignments)
{
$Member = Get-PnPProperty -ClientObject $RoleAssignment -Property Member
If($Member.LoginName -eq $User.LoginName)
{
$UserFound = $True
$FolderItem.RoleAssignments.GetByPrincipal($User).DeleteObject()
Invoke-PnPQuery
}
}
If($UserFound) { Write-host "`tRemoved user from Folder Permission!" }
}
}
Catch {
write-host -f Red "Error Removing user from Folder:" $_.Exception.Message
}

