PowerShell + SharePoint

Пока PowerShell провайдер для SharePoint находится в разработке (и давно😦 ) очень хочется дорваться до автоматизации этого портала своими силами. К счастью в PowerShell это относительно несложно. Хотя SharePoint не предоставляет скриптового интерфейса, зато обладает достаточно мощным .Net API. Угу, а для PowerShell’а .Net вообще является родной средой🙂

Итак, для начала опишу на чём все представленные скрипты тестировались, и на чём оно должно (предположительно) работать.

Тестировал я на бесплатном SharePoint Services 3.0, но работать должно и на SharePoint Server 2007. Скрипты выполняются локально, на компьютере на котором установлен SharePoint, но думаю это можно обойти если поставить на отдельную рабочую станцию SharePoint SDK.

Предварительно, в начале работы необходимо подгрузить сборку SharePoint выполнив следующую команду:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

Если всё прошло хорошо, то должно отобразиться что то вроде этого:

GAC  Version    Location
---  -------    --------
True v2.0.50727 C:\WINDOWS\assembly\GAC_MSIL\Microsoft.SharePoint\12.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.dll

Теперь можно использовать все классы и методы предоставляемые API SharePoint’а. Можно также поместить эту строчку в профиль, и тут будет полезным приписать | Out-Null для того чтобы информация о подгрузке сборки не отображалась при каждом запуске.

В этом посте я опишу функцию Get-SharePointSite, которая берёт в качестве аргумента Url-адрес корневого сайта, и возвращает список всех находящихся на нём сайтов.

Function Get-SharePointSite ($RootSiteURL)
{
	$SpSite = New-Object Microsoft.SharePoint.SpSite($RootSiteURL)
	$SpSite.AllWebs | Select-Object Title, Name, URL, ServerRelativeUrl
}

Функция, как видно, очень простая. Создаётся объект класса Microsoft.SharePoint.SpSite, и выводится содержимое его свойства AllWebs (в котором как следует из названия содержатся все сайты). Следующий далее по конвейеру командлет Select-Object (или просто Select) оставляет на переданных ему объектах только указанные свойства. Если этого не сделать, то будет возвращено множество полезной информации о сайтах, но читать её будет сложнее (более сотни свойств на каждый подсайт!), а так получается вполне красивый вывод:

#> Get-SharePointSite http://info

Title                Name  Url               ServerRelativeUrl
-----                ----  ---               -----------------
Домашняя                   http://info       /
Контакты             cm    http://info/cm    /cm
Финансовый отдел     fin   http://info/fin   /fin
Отдел ИТ             it    http://info/it    /it
Юридический отдел    law   http://info/law   /law
Секретариат          sec   http://info/sec   /sec

Как добавить необходимые вам свойства думаю понятно🙂 Если всё таки хочется получать всю доступную информацию целиком, то можно просто убрать | Select-Object …

Дальше будет интереснее🙂

комментария 2 to “PowerShell + SharePoint”

  1. Get-SharePointList « PowerShell и другие скрипты Says:

    […] Learn, PowerShell, Practice, Scripting, SharePoint — Xaegr @ 8:54 Итак, в предыдущем посте я показал простой пример работы с SharePoint — […]

  2. PowerShell и другие скрипты : Get-SharePointList Says:

    […] в предыдущем посте я показал простой пример работы с SharePoint — […]


Обсуждение закрыто.

%d такие блоггеры, как: