none
Прошу вашей помощи в доработке PowerSell скрипта RRS feed

  • Общие обсуждения

  • Прошу вашей помощи в доработке скрипта!

    По логике как это должно работать:

    1. Получаем все конечные узлы  под сайтом "http://site.ru/departments/ (это не root сайт семейства)
    2. Получаем для каждого конечного узла списки и библиотеки (если такой не существует, то просто пропускаем)
      1. Библиотека закрытых документов
      2. Библиотека открытых документов
      3. Задачи
      4. Новости
    3. Удаляем и восстанавливаем из корзины эти списки и библиотеки
    4. Для каждого списка и библиотеки удаляем web-части

    Действия уже есть, необходимо доработать скрипт, что бы скрипт автоматически получал все конечные подсайты и производил действия по удалению web частей для переделённых списков и библиотек.

    =========

    Про результатами исследования я нашел решение проблемы, но мне необходима помощь в доработке PowerShell скрипта, что бы была возможность обойти все конечные сайты и решить проблему.

    1. Для решения за двоения в “Весь контент сайта” необходимо удалить библиотеку и восстановить ее.

    #Get all end sub sites by use PowerShell:

    $SiteUrl = http://sitecollection/sites/url; $site=New-Object Microsoft.SharePoint.SPSite($SiteUrl)

    $webRoot =$site.AllWebs["http://sitecollection/sites/url/rootweb"]; $webs = $webRoot.GetSubwebsForCurrentUser(); foreach ($web in $webs) { $web }

    #Restore list and libraries from recycle bin by use PowerShell:

    $web = get-spweb " http://sitecollection/sites/url/rootweb/subsite"

    $recyclebinitems = $web.RecycleBin 

    foreach ($recyclebinitem in $recyclebinitems)

    Write-Host $recyclebinitem

    Write-Host $recyclebinitem.itemType

    if ($recyclebinitem.ItemType -eq "List") {

         $web.RecycleBin.Restore($recyclebinitem.ID) 

    }

    }

    1. Для решения за двоения web part в формах нам удалось применить PowerShell script:

    $web  = get-spweb http://sitecollection/sites/url/rootweb/subsite

    $list = $web.Lists["Имя библиотеки"]

    $Form =$list.forms[0]

    $manager = $web.GetLimitedWebPartManager($Form.Url, [System.Web.UI.WebControls.WebParts.PersonalizationScope]: Shared);

    $i = 0; do {$webpart = $manager.WebParts[0]; $manager.DeleteWebPart($webpart);$i++} while ($i -lt $webpart.WebParts.Count)

    Заранее большое спасибо и лучики добра!

    14 октября 2013 г. 6:11

Все ответы

  • Привет,

    К сожалению не силен в скриптах, надеюсь сообщество сможет поделиться идеями


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий. Не забывайте помечать сообщения как ответы и полезные, если они Вам помогли.

    15 октября 2013 г. 6:00
    Модератор