# Удаление всех старых файлов
for ($i=0; Si -It SfilesCount-SBackupFilesLimit+1; $i++) { Remove-Item (SBackupFplder + Sfiles[$i].Name)
»
)
I
# Если папка для копий не существует, она создается else (
New-Item SBackupFolder -type directory
)
SbackupFileName =
("" + SRootWeb + + (Get-Date -Format yyyy-MM-ddThh-mm-ss) + ".dat") SbackupFilePath = SBackupFolder + SbackupFileName SstartTime = Get-Date
Backup-SPSite -identity $_.ID -path (SbackupFilePath) -force SendTime = Get-Date
# Проверка, определены ли значения Email и SmtpServer if (SEmail -ne "" -and SSmtpServer -ne "") (
$subject = "Копирование семейства сайтов SharePoint завершено!"
Sbody = "Скопировано следующее семейство сайтов: " + SRootWeb + П'п"Sbody += "Семейство сайтов было скопировано в: " + SbackupFileName + " п"Sbody += "Копирование начато: " + SstartTime + ", закончено: " +SendTime + "’п'п"
# Получение размера семейства сайтов
SSiteCollectionSize = Get-SPSite I Where {$_.ID -eq SSPSitelD) | 4>Select G{Expression={$_.Usage.Storage/1MB})
# Получение размера файла копии
SbackupFileSize = Get-Childltem SbackupFilePath | Select {$_.Length/lMB} Sbody += "Размер семейства сайтов в системе SharePoint: " + SSiteCollectionSize + " MB'n"
Sbody += “Размер файла копии: " + SbackupFileSize + “ MB"
Ssmtp = new-object Net.Mail.SmtpClient(SSmtpServer)
# Отправка почтового сообщения
Ssmtp.Send($Email, SEmail, Ssubject, Sbody)
)
>
Этот сценарий можно запустить с помощью одного из следующих фрагментов кода:
И Резервное копирование всех колекций сайтов в ферме
Get-SPSite | ForEach-Object (Backup-SPSiteCollections -SPSitelD S.ID 4>-BackupFolder "C:\Backup-Location\" -RootWeb $_.RootWeb -BackupFilesLimit 5 'b-Email "admini stratorGcompanyABC.com" -SmtpServer "mail.companyABC.com")
# Резервное копирование семейств сайтов, URL которых
# равен http://portal.companyABC.com
Get-SPSite I Where {ID -eq "http://portal.companyABC.com"} I FgrEach-Object {Васkup-SPSiteCollections -SPSitelD $_.ID -BackupFolder "C:\Backup-Location\" 4>-RootWeb $_.RootWeb -BackupFilesLimit 5 -Email "administratorGcompanyABC.com" 4>-SmtpServer "mail.companyABC.com"}
• Резервное копирование семейств сайтов, URL которых не равен
• http://no-backup.companyABC.com , почтовые извещения не посылаются Get-SPSite I where ($_.ID -ne "http://no-backup.companyABC.cofn"} | ForEach-Object 'fe{Backup-SPSiteCollectionS -SPSitelD $_.ID
4>-BackupFolder "C:\Backup-Location\“ -RootWeb $ .RootWeb -BackupFilesLimit 5)
Б этих трех примерах показано, как можно запускать данный сценарий в различных ситуациях. Сценарий резервного копирования содержит шесть параметров:
• SPSitelD— GUID, уникально идентифицирующий семейство сайтов. В вышеприведенных примерах идентификатор передавался из цикла ForEach-Object.
• BackupFolder—папка для резервной копии на локальном диске. Не забывайте добавить в конце обратную косую черту. Если указанная папка не существует, она будет автоматически создана.
• RootWeb— Значение свойства RootWebсемейства сайтов. Оно используется для формирования имени файла копии — например, RootWeb-BackupTime. dat.
• BackupFilesLimit — Количество предыдущих файлов с копиями, которые необходимо оставить в папке BackupFolder. Если это число равно 5, то только пять последних резервных копий будут оставлены в папке копий, а все предыдущие будут удалены.
• Email— Необязательное значение, используемое в полях “Кому” и “От кого" в заголовке почтового сообщения. Если оно не указано, то сообщение с уведомлением не посылается.
• SmtpServer—Адрес SMTP-сервера, на который будет посылаться сообщение с уведомлением. Если адрес не указан, то сообщение с уведомлением не посылается.
Автоматическая установка решений
Время от времени администраторам бывает нужно подготовить новую среду SharePoint, а для этого необходимо установить и развернуть ряд компонентов. Новые решения невозможно добавить из пользовательского интерфейса — только из STSADM или PowerShell. У сторонних решений обычно предусмотрен встроенный инсталлятор, но большинство бесплатных или самодельных решений не обладают таким сервисом, и для их установки и развертывания необходимо выполнить несколько командлетов. Приведенный ниже сценарий предназначен для облегчения этой процедуры. В нем несколько встроенных командлетов “соединены" в единую функцию, которая облегчает процесс установки.
Function Install-SPFeatures ($Path)
$files = get-childitem $Path | where {$_.Name -like "*.wsp"}
ForEach(Sfile in $files) {
$existingSolution = Get-SPSolution I Where{$ .Name -eq $file.Name}
# проверка, существует ли уже это решение if($existingSolution -eq $null) {
Add-SPSolution -LiteralPath (SPath + "\ n+ $file.Name)
)
# обновление существующего решения else {
# если решение развернуто, оно заменяется новой версией if($existingSolution.Deployed -eq $true) {
Читать дальше