当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:使用 PowerShell 创建自定义权限级别

作者:精品下载站 日期:2024-12-14 14:25:48 浏览:14 分类:玩电脑

SharePoint Online:使用 PowerShell 创建自定义权限级别


要求:在 SharePoint Online 网站集中为“贡献但不删除”权限创建新的权限级别。

SharePoint Online 权限级别:

SharePoint 权限级别是用户可以在 SharePoint 中执行的一组操作,打包为一个组,以使权限管理更容易。因此,您不必为用户和组提供单独的权限,而是选择一个权限级别并将其分配给新用户。 (或者甚至将用户添加到具有关联的特定权限级别的组)。 SharePoint 中包含默认权限级别,例如:

  • 完全控制 - 适用于网站集所有者。此权限级别包括所有可用权限,并授予分配的用户对站点及其所有资源的管理员级别访问权限。
  • 设计 - 设计权限级别提供管理 SharePoint 网站内的列表、库和页面以及批准内容和管理网站外观的能力。
  • 管理层次结构 - 除了编辑权限之外,您还可以创建和管理子网站。
  • 编辑 - 分配给网站成员。使关联用户能够创建和管理列表和库及其内容。
  • 批准 - 当内容配置为需要批准时,批准权限级别授予编辑和批准页面、列表项和文档的能力。
  • 贡献 - 此权限级别提供查看、添加、更新和删除列表项和文档的能力。
  • 读取 - 读取权限级别提供对站点资源的只读访问权限。他们可以查看页面、列出项目和下载文档。 在典型的团队网站中,默认情况下,访客组被授予读取权限。
  • 受限访问:此权限无法手动设置。当授予最低级别对象访问权限而不授予父对象访问权限时,SharePoint 会自动分配该权限。
  • 仅查看 - 仅查看权限类似于读取。它允许用户查看文件,但用户无法下载它们。
切勿在 SharePoint 中编辑或删除任何 OOTB 权限级别!如果需要,您可以复制任何现有的权限级别并对其进行修改!

如何在 SharePoint Online 中创建权限级别?

在 SharePoint Online 中创建新的权限级别是一个简单的过程,只需单击几下即可完成。假设您拥有“完全控制”或“管理权限”访问权限,我将引导您完成创建新权限级别的步骤,向您展示如何在 SharePoint Online 中创建权限级别。在现实场景中通常需要“贡献而不删除”权限级别。比方说,您希望用户能够将文件添加到库中,但不能从库中删除文件。要实现这一点,我们只需复制“贡献”权限级别并从中取消“删除项目”权限即可!要在 SharePoint Online 中创建新的权限级别,请执行以下步骤:

  1. 转至 SharePoint 站点 >> 单击“设置”>>“站点权限”>>“高级权限设置”。 (在经典站点中,您可以单击站点设置>>站点权限)。
  2. 单击功能区中的权限级别按钮。

这将带您进入列出 SharePoint 中可用的所有默认权限级别及其相应描述的页面。现在,您可以添加权限级别或单击任何现有权限级别,复制,然后编辑新的权限级别以满足您的要求。

[玩转系统] SharePoint Online:使用 PowerShell 创建自定义权限级别

请勿更改任何默认权限级别,例如“完全控制”或“贡献”。

为用户和组分配权限级别

权限级别准备就绪后,您可以通过单击“编辑用户权限”按钮来编辑权限以分配新的权限级别。这适用于任何类型的 SharePoint 网站,例如团队网站/组连接/非 Microsoft 365 组连接/通信网站。

  1. 导航至网站主页 >> 单击“设置”齿轮图标 >> 网站权限 >> 单击“高级权限设置”
  2. 如果需要,请中断权限继承,通过单击“编辑用户权限”按钮选择任何现有用户、SharePoint 组或安全组
  3. 通过选择相应的复选框,在站点级别设置用户的权限级别。

    [玩转系统] SharePoint Online:使用 PowerShell 创建自定义权限级别

您还可以从列表设置/文档库设置中设置特定列表或文档库的权限。

请注意,自定义权限级别只能在网站集级别创建,因此如果您需要为另一个网站创建唯一的权限级别,则需要在那里再次创建。在网站集级别创建的权限级别会传播到子网站。

SharePoint Online PowerShell 创建权限级别

让我们自动执行上述步骤,以使用 PowerShell 创建自定义权限级别。以下是如何使用 PowerShell 在 SharePoint Online 中创建自定义权限级别:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
  
##Variables for Processing
$SiteUrl = "https://crescent.sharepoint.com"
$SourcePermissionLevelName ="Contribute"
$TargetPermissionLevelName ="Contribute Without Delete"

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 source permission level
    $RoleDefinitions = $web.RoleDefinitions
    $Ctx.Load($RoleDefinitions)  
    $SourceRoleDefinition = $RoleDefinitions.GetByName($SourcePermissionLevelName)
    $Ctx.Load($SourceRoleDefinition)
    $Ctx.ExecuteQuery()

    #get base permissions from the source and remove "Delete"
    $TargetBasePermissions = $SourceRoleDefinition.BasePermissions
    $TargetBasePermissions.clear([Microsoft.SharePoint.Client.PermissionKind]::DeleteListItems)

    #check if the given permission level exists already!
    $TargetPermissionLevel = $RoleDefinitions | Where-Object { $_.Name -eq $TargetPermissionLevelName } 
    if($TargetPermissionLevel -eq $null)
    {
        #Create new permission level from source permission level
        $PermissionCreationInfo = New-Object Microsoft.SharePoint.Client.RoleDefinitionCreationInformation
        $PermissionCreationInfo.Name = $TargetPermissionLevelName
        $PermissionCreationInfo.Description = $TargetPermissionLevelName
        $PermissionCreationInfo.BasePermissions = $TargetBasePermissions

        #Add the role definitin to the site
        $TargetPermissionLevel = $Web.RoleDefinitions.Add($PermissionCreationInfo)
        $Ctx.ExecuteQuery() 
 
        Write-host "New Permission Level Created Successfully!" -ForegroundColor Green
    }
    else
    {
        Write-host "Permission Level Already Exists!" -ForegroundColor Red
    }
}
Catch {
    write-host -f Red "Error Creating Permission Level!" $_.Exception.Message
}

此脚本复制现有权限级别并创建新的权限级别。您还可以从头开始创建新的权限级别,而不是复制和操作现有的权限级别。


#Create base Permission set
$Permissions = New-Object Microsoft.SharePoint.Client.BasePermissions
#Add permissions to it
$Permissions.Set([Microsoft.SharePoint.Client.PermissionKind]::ViewListItems)
$Permissions.Set([Microsoft.SharePoint.Client.PermissionKind]::ViewVersions)  

SharePoint Online:PnP PowerShell 创建自定义权限级别

让我们通过复制贡献权限级别并使用 PnP PowerShell cmdlet Add-PnPRoleDefinition 从中删除删除功能来创建一个新的权限级别“贡献但不删除”。


#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Get Permission level to copy
$ContributeRole = Get-PnPRoleDefinition -Identity "Contribute"

#Create a custom Permission level and exclude delete from contribute 
Add-PnPRoleDefinition -RoleName "Contribute without Delete" -Clone $ContributeRole -Exclude DeleteListItems, DeleteVersions -Description "Contribute without delete permission"

同样,您可以复制权限级别并向其添加权限。例如,复制读取权限级别并向其添加“AddListItems”和“EditListItems”。


#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/Retail"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Create a custom permission level
$BasePermissionLevel = Get-PnPRoleDefinition -Identity "Read"

#Set Parameters for new permission level
$NewPermissionLevel= @{
    Include     = 'EditListItems', 'AddListItems'
    Description = "Read Permissions with Add and Edit List Items"
    RoleName    = "Read with Contribute to List Items"
    Clone       = $BasePermissionLevel
}

#Create new permission level
Add-PnPRoleDefinition @NewPermissionLevel
要获取基本权限枚举的所有值,请使用:[Enum]::GetNames(“Microsoft.SharePoint.Client.PermissionKind”)

为租户中的所有网站集创建自定义权限级别

如何在租户中的所有站点上创建自定义权限级别?


#Parameters
$Domain =  "CrescentIntranet" #Domain Name in SharePoint Online. E.g. https://Crescent.sharepoint.com
$NewPermissionLevelName = "Contribute without Delete"
$BasePermissionLevelName = "Contribute"
   
#Frame Tenant URL and Tenant Admin URL
$TenantURL = "https://$Domain.SharePoint.com"
$TenantAdminURL = "https://$Domain-Admin.SharePoint.com"

#Get Credentials to connect
$Cred = Get-Credential

#Connect to Admin Center
Connect-PnPOnline -Url $TenantAdminURL -Credentials $Cred
   
#Get All Site collections - Filter BOT and MySite Host
$Sites = Get-PnPTenantSite -Filter "Url -like '$TenantURL'"
  
#Iterate through all site collections
$Sites | ForEach-Object {
    #Connect to each site collection
    Connect-PnPOnline -Url $_.URL -Credentials $Cred
 
    #check if the given permission level exists already!
    $NewPermissionLevel = Get-PnPRoleDefinition | Where-Object { $_.Name -eq $NewPermissionLevelName } 
    If($NewPermissionLevel -eq $null)
    {
        #Get Permission level to copy
        $BaseRoleDefinition = Get-PnPRoleDefinition -Identity $BasePermissionLevelName
 
        #Create a custom Permission level and exclude delete from contribute 
        Add-PnPRoleDefinition -RoleName $NewPermissionLevelName -Clone $BaseRoleDefinition -Exclude DeleteListItems, DeleteVersions -Description "Contribute without delete permission" | Out-Null
        Write-host "Created Permission Level at $($_.URL)" -f Green
    }
    Else
    {
        Write-host "Permission Level Already Exists at $($_.URL)" -ForegroundColor Yellow
    }
}

最后但并非最不重要的一点是:SharePoint Online 中的编辑权限和贡献权限有什么区别?具有“编辑”权限的用户可以在 SharePoint 中添加、编辑和删除列表和库。但是,贡献权限仅限于向现有列表和库贡献项目和文件(添加、编辑和删除),而无法添加、编辑和删除列表和库。

要更新 SharePoint Online 中的现有权限级别,请使用:如何在 SharePoint Online 中编辑权限级别?

经常问的问题:

如何在 SharePoint Online 中授予文件夹级别权限?

要向 SharePoint Online 中的文件夹提供权限: 单击文件夹菜单中的“管理访问权限” >> 单击“高级”链接 >> 停止继承权限 如果该文件夹从其父文件夹继承权限 >> 单击“授予权限”按钮将用户添加到文件夹。输入用户和组的名称,然后单击“共享”按钮向文件夹添加权限。
详细信息:在 SharePoint Online 中设置文件夹级别权限

SharePoint Online 仅查看权限级别缺失?

在网站集和网站级别激活“SharePoint Server Enterprise 网站集功能”。
详细信息:SharePoint Online 中缺少“仅查看”权限?这是修复方法!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯