我正在尝试创建一个脚本来帮助自动执行此过程,但对于将PowerShell与SharePoint一起使用并不是真正了解要采用的路径这一点相当新。
我有40个项目的列表,我需要为每个项目创建一个库。然后,每个库需要具有3个默认组(所有者,成员,访问者)的唯一权限。这些组的名称应与List.Title + Owners / Members / Visitors相同。
到目前为止,我创建了一个网站组,如下所示:
# Owner Group
$web.SiteGroups.Add(“$web Owners”, $web.Site.Owner, $web.Site.Owner, “Use this group to grant people full control permissions to the $web site”)
$ownerGroup = $web.SiteGroups["$web Owners"]
$ownerGroup.AllowMembersEditMembership = $true
$ownerGroup.Update()
我的群组的命名需要是列表标题,而不是我上面的网络名称。
我创建了一个像这样的新库:
PS > $spWeb = Get-SPWeb -Identity http://SPServer
PS > $listTemplate = [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary
PS > $spWeb.Lists.Add("My Documents","My Doc Library",$listTemplate)
显然,这根本不是自动化的,并且不仅仅是使用GUI来创建每个新库并添加站点组。任何人都可以帮助我开始编写一个脚本,该脚本将遍历一个名称列表创建一个库并在网站上为每个新库创建3个组?
谢谢!
答案 0 :(得分:1)
这应该让你走上正确的轨道我相信。
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
$Lists = @("My Documents", "My Docs", "Testing")
$Groups = @("Owners", "Members", "Visitors")
$listTemplate = [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary
$Web = Get-SPWeb "Your_URL"
$Lists | ForEach-Object {
$ListName = $_
$Description = "$_ Description"
$Web.Lists.Add($ListName, $Description, $listTemplate)
$Groups | % {
$GroupName = "$ListName $_"
$Web.SiteGroups.Add($GroupName, $Web.Site.Owner, $Web.Site.Owner, "Group $GroupName created by automatic process")
$group = $Web.SiteGroups["$GroupName"]
if ( !$GroupName -contains "Visitors")
{
$group.AllowMembersEditMembership = $true
} else
{
$group.AllowMembersEditMembership = $false
}
$group.Update()
}
}