• SiteCollectionOwner— учетная запись, которая будет первичным администратором семейства сайтов. При отсутствии этого значения будет использована ApplicationPoolAccount.
• TemplateName— Шаблон, который будет применен к созданному семейству сайтов. При отсутствии этого значения будет использован шаблон "Blank Site”.
Быстрое создание структур сайта
Вместе с SharePoint поставляется много встроенных шаблонов, которые можно подстроить под свои потребности. PowerShell позволяет упростить создание сайтов для любой цели. Встроенные сценарии могут создать и разбить на части структуры сайта.
В следующем примере показано, как можно использовать PowerShell для автоматизации создания структуры сайта. В нем сочетаются возможности вывода списка шаблонов и создания нового сайта. Сценарий сначала выводит все доступные шаблоны сайтов (но без скрытых шаблонов и шаблонов, предназначенных для корневых сайтов). Затем для каждого сайта из данного семейства создается новый сайт.
Function Create-SFMockupSites($Path)
<
$webTemplates = Get-SPWebTemplate I where 4>{$_.IsHidden -eq $false -and $_.IsRootWebOnly -eq $false 4>-and $_-Name -ne "BICenterSiteKO”)
New-SPWeb -url ($Path + "/templates") -Template "STS#1“ -Name "Templates" $rootWeb = Get-SPWeb ($Path + "/templates")
ForEach(SwebTemplate in SwebTemplates) {
$webTemplate.Title
New-SPWeb -url ($rootWeb.Url + "/" + $webTemplate.Title)
^-Template $webTemplate.Name
4>-Name $webTemplate.Title -Description SwebTemplate.Description
>
\
Чтобы использовать этот код, введите команду
Create-SPMockupSites(" http://portal.companyABC.com ")
Сценарий создает пустой сайт по адресу http: //portal .companyABC.com/Templates,а в нем подсайт для каждого доступного шаблона.
В свежей инсталляции SharePoint эта команда создает примерно 20 новых сайтов. Данный сценарий удобен для подготовки презентаций, создания демо-сайтов или подготовки сайтов для обучения конечных пользователей.
Администраторы могут создать аналогичный сценарий при необходимости создать ряд сайтов типа “песочниц” перед курсом обучения. Все эти сайты будут иметь одинаковые шаблоны, но разных владельцев сайтов.
Автоматизация резервного копирования семейств сайтов с помощью PowerShell
Сценарий для автоматизации резервного копирования семейства сайтов с помощью команд STSADM был приведен в предыдущей версии данной книги. Этот сценарий был одним из самых нужных сценариев во всей книге, т.к. он позволял администраторам создавать в ночное время резервные копии отдельных семейств сайтов в обычных файлах. Однако код сценария был написан на Visual Basic, размещался на четырех страницах и содержал сложную логику для перебора семейств сайтов и поочередного их копирования.
В SharePoint 2010 это же можно сделать из более простого интерфейса. Командлеты PowerShell позволяют полностью автоматизировать процедуру резервного копирования. Приведенный ниже сценарий демонстрирует некоторые дополнительные моменты, которые возможны в сочетании с парой встроенных сценариев.
Сценарий позволяет делать следующее:
• Создать резервные копии для всех семейств сайтов в серверной ферме.
• Имя файла с резервной копией будет объединением имени семейства сайтов и даты создания копии.
• Пользователь, запускающий сценарий, может указать количество предыдущих копий, которые необходимо сохранить.
• После завершения копирования отправляется уведомление на указанный почтовый адрес.
Код сценария:
Function Backup-SPSiteCollections ()
{
param(
[Parameter(
Position=0,
Mandatory=$true
)]
[Guid]SSPSitelD,
[Parameter(
Position=0,
Mandatory=?true
)]
[string]$BackupFolder,
[Parameter (
Position=0,
Mandato ry=$ t rue
)]
[string]SRootWeb,
[Parameter(
Position=0,
Mandatory=$true
)]
[int]$BackupFilesLimit,
[Parameter(
Position=0,
Mandatory=$false
)]
[string]SEmail =
[Parameter(
Position=0,
Mandatory=$false
)]
[string] $SmtpServer = 11"
)
# Проверка, существует ли папка для копии
if (Test-Path SBackupFolder) {
# Выборка файлов с более ранними копиями, упорядоченных по времени
# последней записи (last modified)
Sfiles = Get-Childitem $BackupFolder I where
4>{$_.Name -like ("*" + $RootWeb + "*.dat")) | Sort $_.LastWriteTime $filesCount = G(Sfiles).Count
Глава
# Если в каталоге больше файлов, чем backupFilesLimitif (SfilesCount -ge SBackupFilesLimit) {
Читать дальше