HelloWorld "John Smith" 47
HelloWorld -YourAge 47 -YourName "John Smith”
Использование SharePoint .NET API для расширения возможностей PowerShell
В SharePoint имеется набор встроенных командлетов PowerShell, которые позволяют управлять фермой SharePoint, всеми компонентами, семействами сайтов и отдельными сайтами. Однако эти командлеты не обеспечивают доступ к спискам, страницам, рабочим потокам SharePoint и т.д. Это ограничение легко преодолевается с помощью существующего SharePoint .NET API.
Чтобы задействовать этот дополнительный API (в данном случае — SharePoint) и использовать его объекты и функции, его необходимо загрузить:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
выборка списков SharePoint с помощью PowerShell
В следующем примере показано, как получить перечень списков и библиотек SharePoint, имеющихся в сайте SharePoint. Для этого нужна пользовательская функция:
function Get-SPList
I
param(
[Parameter(
Position=0,
Mandatory=$true,
ValueFromPipeline=$true
)]
[Microsoft.SharePoint.SPWeb]$CurrentWeb,
[Parameter(
Position=l,
Mandatory=$ false
)]
[string]$Title = $null
)
foreach(Slist in $CurrentWeb.Lists) {
if ($list.Hidden -eq $false -and (STitle -eq $null -or $Title -eq "")) { Write-Output Slist
>
elseif(Slist.Title -eq $Title) {
Write-Output $list
>
}
)
Эта функция получает параметр SPWebв виде объекта и вызывает нужную функцию из SharePoint API, чтобы выбрать списки (только доступные из меню быстрого запуска).
Для вызова данной функции введите следующую команду:
Get-SPSite | Get-SPWeb -Limit ALL I ForEach-Object {Get-SPList -CutrentWeb $_} | *3>Select ParentWeb, ParentWebUr 1, Title, DefaultViewUrl
Командпет Get-SPSiteсоздает список всех семейств сайтов (SPSite)и передает результат командлету Get-SPWeb,который создает списки всех сайтов (SPWeb)в этих семействах
Часть ll
сайтов. И, наконец, командлет Get-SPListперебирает все списки в каждом обнаруженном сайте (только видимые списки, системные списки обычно скрыты). Необязательный параметр "-Limit ALL"не следует задавать для больших ферм. Для вывода списков только из одного сайта используйте следующий код:
Get-SPWeb " http://portal.companyABC.com/A-Project-Site " |
4>ForEach-0bject (Get-SPList $_) I Select ParentWeb, ParentWebUrl,
4>Title, DefaultViewUrl
Создание новых списков и библиотек документов
Встроенные командлеты PowerShell можно использовать совместно с SharePoint .NET API для оперативного создания списков и библиотек документов. Вот пример такого кода:
function New-SPList()
(
param(
[Parameter(
Position=0,
Mandatory=$true,
ValueFromPipeline=$true
)]
[Microsoft.SharePoint.SPWeb]$SPWeb,
[Parameter(
Position=l,
Wandatory=$true
)]
[string]$Title,
[Parameter(
Position=2,
Mandatory=$false
)]
[string]$Description = "",
[Parameter(
Position=3,
Mandatory=$false
)]
[string]$ListTemplateType = "DocumentLibrary"
)
$SPWeb.Lists.Add($Title, $Description, $ListTemplateType)
Вызвать эту функцию можно с помощью примерно такого кода:
Get-SPWeb " http://portal.companyABC.com/A-Project-Site " I New-SPList 4>-Title "Sample Doc. Lib" -Description "Пример Doc. Lib. Sample"
Get-SPWeb " http://portal.companyABC.com/A-Project-Site " | New-SPList 4>-Title "Sample Custom List"
Ч^-Description "Пример пользовательского списка" -ListTemplateType "GenericList"
Get-SPWeb " http://portal.companyABC.com/A-Project-Site " | New-SPList 'b-Title "Sample Calendar"
^-Description "Пример календаря" -ListTemplateType "Events"
В этом примере в сайте SharePoint (http: //portal .companyABC. com/A-Project-Site)создаются три списка. Функция New-SPListпринимает три параметра: Title, Descriptionи ListTemplateType.Необходимо указать уникальное в пределах сайта имя списка; для передачи нужного значения шаблона приходится просмотреть содержимое перечисленияSPListTemplateType. Более подробную информацию можно получить по адресу
http://msdn.microsoft.com/en-us/library/microsoft.SharePoint . splisttemplatetype(office.14).aspx
Изменение свойств списка
Допустим, что владельцу сайта необходимо унифицировать параметры версий для всехсписков и библиотек в ферме сайтов.В такой ситуации поможет сочетаниеPowerShell иAPI: нужно объединить имеющиеся командлеты Get-SPSite и Get-SPWeb с пользовательской функцией:
function Set-SPList()
<
param(
[Parameter(
Читать дальше