2014-01-22 4 views
1

Я пытаюсь сделать скрипт, чтобы помочь автоматизировать этот процесс немного, но я довольно новичок в использовании PowerShell с SharePoint и не знаю, какой маршрут нужно предпринять.Создание библиотек и разрешений с SharePoint Powershell

У меня есть список из 40 элементов, и мне нужно создать библиотеку для каждого. Каждая библиотека должна иметь уникальные разрешения с тремя группами по умолчанию (владельцы, участники, посетители). Группы следует называть такими же, как List.Title + Владельцы/Участники/Посетители.

До сих пор я создать сайт группы следующим образом:

# 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) 

Очевидно, что это не является автоматизированной на всех, и не быстрее, чем просто с помощью графического интерфейса, чтобы сделать каждую новую библиотеку и добавление в группах сайта. Может ли кто-нибудь помочь мне начать с скрипта, который будет проходить через список имен, создать библиотеку и создать 3 группы на сайте для каждой новой библиотеки?

Спасибо!

+0

Как выглядит объект, содержащий 40 элементов списка? – websch01ar

+0

Это база данных SQL, а также список в документе excel. – Braden

ответ

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() 
    } 
} 
+0

Спасибо за ответ, я буду копаться в этом сегодня! – Braden

+0

Сообщите мне, если у вас есть вопросы и удачи. Обратите внимание, что вам нужно будет сопоставить объекты списков/групп с тем, что вы получаете от SQL и Excel. Это действительно уговорный код. – websch01ar

+0

Я использовал $ lists = import-csv «путь к файлу», чтобы получить список имен каждой библиотеки. Это хороший способ сделать это? Я также задавался вопросом о следующей части: $ Описание = "$ _ Описание" Какова переменная, получаемая из $ _ Описание? Можно ли установить переменную для описания, которая будет захватывать текст из csv, а также для описания? – Braden

Смежные вопросы