使用SharePoint Powershell创建库和权限

时间:2014-01-22 19:29:43

标签: powershell sharepoint-2010

我正在尝试创建一个脚本来帮助自动执行此过程,但对于将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个组?

谢谢!

1 个答案:

答案 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()
    }
}