Jul 24 2023 05:31 AM
Bonjour,
Je dispose d'un SPO dans lequel des dossiers (et sous-dossiers) ont été disposés (actuellement aucun document présent à l'intérieur).
l'héritage des droits du SharePoint a été retiré car chaque dossier à la racine des "documents partagés" sera administré par un Groupe de Sécurité qui lui appartient.
Cependant, afin que l'arborescence des dossiers ne soit pas "malencontreusement" détruite par d'éventuelles erreurs humaines des membres de ces groupes, nous souhaitons que chaque dossier soit en lecture seule hormis chaque dernier dossier de l'arborescence.
(Grand-Parents en Lecture, Parent en Lecture, enfant en Lecture/ecriture en quelques sorte).
La quantité de dossier en place représente 6 414 dossiers ce qui, vous vous en doutez ne peux se faire à la main.
Je suis donc à la recherche de commande qui pourrait me permettre de faire cette action en powershell.
Pourriez-vous m'aider svp ?
En pj : un exemple de l'arborescence pour que ce soit plus ... parlant !
Merci beaucoup aux contributeurs
Jul 25 2023 05:25 AM
Hi @ViriisXP,
thanks for your question, I don't speak French so I will try to help you in English.
To achieve the permission settings you described for your SharePoint Online (SPO) folders and subfolders using PowerShell (if I translated it properly), you can use the SharePoint Online Management Shell.
Before running the script, make sure you have installed the SharePoint Online Management Shell and connected to your SharePoint Online environment.
You can download SharePoint Online Management Shell here:
Download SharePoint Online Management Shell from Official Microsoft Download Center
Here's a PowerShell script that sets the permissions for each folder and its subfolders as you mentioned:
# Connect to SharePoint Online
Connect-SPOService -Url https://yourtenantname-admin.sharepoint.com
# Set the root URL of your document library
$rootUrl = "https://yourtenantname.sharepoint.com/sites/sitename/Shared Documents"
# Function to set folder permissions
function Set-FolderPermissions {
param (
[Microsoft.SharePoint.Client.Folder]$folder,
[Microsoft.SharePoint.Client.RoleType]$permissionLevel
)
$ctx = $folder.Context
$folder.ListItemAllFields.BreakRoleInheritance($true, $false)
$ctx.Load($folder.ListItemAllFields.RoleAssignments.Add($folder.ParentList.ParentWeb.SiteGroups.GetByName("YourReadOnlyGroup"), $permissionLevel))
$folder.Context.ExecuteQuery()
}
# Function to recursively set permissions for folders and subfolders
function Set-PermissionsRecursively {
param (
[Microsoft.SharePoint.Client.Folder]$folder
)
$ctx = $folder.Context
$ctx.Load($folder.Folders)
$ctx.Load($folder.ListItemAllFields)
$ctx.ExecuteQuery()
# Set permission for the current folder
Set-FolderPermissions -folder $folder -permissionLevel [Microsoft.SharePoint.Client.RoleType]::Read
# Recursively set permissions for subfolders
foreach ($subfolder in $folder.Folders) {
Set-PermissionsRecursively -folder $subfolder
}
}
# Main script
$ctx = Get-SPOContext
# Get the root folder
$rootFolder = $ctx.Web.GetFolderByServerRelativeUrl($rootUrl)
$ctx.Load($rootFolder)
$ctx.ExecuteQuery()
# Set permissions recursively for each folder and its subfolders
Set-PermissionsRecursively -folder $rootFolder
You will need to modify the script by replacing `https://yourtenantname.sharepoint.com/sites/sitename/Shared Documents` with the actual URL of your document library. Also, replace `"YourReadOnlyGroup"` with the name of the security group that should have read-only access.
Please click Mark as Best Response & Like if my post helped you to solve your issue.
This will help others to find the correct solution easily. It also closes the item.
If the post was useful in other ways, please consider giving it Like.
Kindest regards,
Leon Pavesic
Jul 25 2023 07:52 AM - edited Jul 25 2023 07:53 AM
Bonjour @LeonPavesic (désolé je réponds avec mon compte pro), il semblerait si je comprends bien, que chaque dossiers disposera des mêmes droit que son parent ?
Ce que je souhaite c'est que
Si je reprends l'exemple de la capture :
S1 | Lecture |
S1D1 | Modification |
S1D2 | Modification |
S1D3 | Modification |
S1D4 | Modification |
.... | .... |
S2 | Lecture |
S2D1 | Lecture |
S2D1SSD1 | Modification |
S2D1SSD2 | Modification |
.... | .... |
S2D1SSD5 | Lecture |
S2D1SSD5E1 | Modification |
S2D1SSD5E2 | Modification |
... | ... |
Je suis vraiment désolé si je ne suis pas assez clair. :\
Merci énormément pour l'aide ! Thx