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

[玩转系统] 使用 PowerShell 在 SharePoint 中复制权限级别

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

使用 PowerShell 在 SharePoint 中复制权限级别


要求:使用 PowerShell 在 SharePoint 2013 中复制权限级别

[玩转系统] 使用 PowerShell 在 SharePoint 中复制权限级别

PowerShell 在 SharePoint 中以编程方式复制权限级别

您是否曾经需要在 SharePoint 中复制权限级别?也许您需要创建一个与现有权限级别类似的新权限级别,但需要进行一些更改。或者您可能需要复制权限级别以进行测试。无论如何,这篇博文将向您展示如何使用 PowerShell 复制 SharePoint 权限级别。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 

#Configuration parameters
$WebURL="https://portal.crescent.com"
$SourcePermissionLevelName="Contribute"
$TargetPermissionLevelName="Contribute without Delete"

#Get the Source Permission Level
$SourcePermissionLevel = $Web.RoleDefinitions[$SourcePermissionLevelName]
#sharepoint copy permission level
$TargetPermissionLevel = New-Object Microsoft.SharePoint.SPRoleDefinition($SourcePermissionLevel)

#Remove "Delete" Base permission 
$TargetPermissionLevel.BasePermissions = "ViewListItems, AddListItems, EditListItems, OpenItems, ViewVersions, DeleteVersions, ManagePersonalViews, ViewFormPages, Open, ViewPages, CreateSSCSite, BrowseDirectories, BrowseUserInfo, AddDelPrivateWebParts, UpdatePersonalWebParts, UseClientIntegration, UseRemoteAPIs, CreateAlerts, EditMyUserInfo"

#Add the New Permission Level
$TargetPermissionLevel.Name= $TargetPermissionLevelName
#permission level description
$TargetPermissionLevel.Description="Contribute without Delete Permission Level"
$web.RoleDefinitions.Add($TargetPermissionLevel)
write-host "Permission level Copied successfully!"

上述 PowerShell 脚本以编程方式在 SharePoint 2013/2010 中复制权限级别并应用给定的基本权限。虽然它将现有权限级别复制到新权限级别,但在网站集之间复制权限级别怎么样?

使用 PowerShell 在网站集之间复制权限级别:

当涉及到在 SharePoint 站点之间复制权限级别时,您无法使用 Web 浏览器用户界面来实现。但是,您可以使用 PowerShell 在 SharePoint 站点之间复制权限级别。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 

Function Copy-PermissionLevel($SourceWebURL, $TargetWebURL, $PermissionLevelName)
{
 #Get the Webs
 $SourceWeb = Get-SPWeb $SourceWebURL
 $TargetWeb = Get-SPWeb $TargetWebURL
 
 #Check if given Source permission level exists
 if($SourceWeb.RoleDefinitions[$PermissionLevelName] -ne $null)
 {
  #Get the Source Permission Level
  $SourcePermissionLevel = $SourceWeb.RoleDefinitions[$PermissionLevelName]
  
  #Check if Target permission level name already exists!
  if($TargetWeb.RoleDefinitions[$PermissionLevelName] -eq $null)
  {
   #sharepoint copy permission level
   $TargetPermissionLevel = New-Object Microsoft.SharePoint.SPRoleDefinition($SourcePermissionLevel)
   #Add the New Permission Level
   $TargetWeb.RoleDefinitions.Add($TargetPermissionLevel)

   write-host "Permission level Copied successfully!" -f Green
  }
  else
  {
   write-host "Permission Level Already Exists!" -f Red
  }
 }
 else
 {
  write-host "Source Permission Level Not Found!" -f Red
 }
}

#Configuration Variables
$SourceURL="https://portal.crescent.com/"
$TargetURL="https://portal.crescent.com/sites/sales"
$PermissionLevelName="Contribute without Deletes"

#Call the function to copy permission level between site collections
Copy-PermissionLevel $SourceURL $TargetURL $PermissionLevelName 

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

取消回复欢迎 发表评论:

关灯