Get-SPSolution как средства бекапирования разработки
В процессе разработки/администрирования SharePoint очень часто с одной и той же фермой работает множество разработчиков и администраторов. Особенно, если в компании процесс развертывания и применения разработки еще не полностью устоялся, множество работ производится на рабочей базе и некоторые из участников остаются в неведении происходящего с решениями на ферме. Да и существует множество других случаев, когда часть решений, опубликованных на ферме, проходят мимо администратора.
В данной статье речь пойдет о моментальной выгрузке существующих решений (Solution). Описанные ниже инструкции можно применять как для разовой выгрузки перед выполнением определенных манипуляций с веб-приложениями, так и для настройки постоянного бекапирования развернутой разработки (может использоваться как одна из составляющих бекапа).
Получение списка всех решений фермы можно осуществить с помощью PowerShell командлета Get-SPSolution.
Данный командлет хорошо описан тут
Описанный ниже скрипт PowerShell не является открытием, а лишь описывает возможную применимость для администраторов. Данный сценарий обходит список всех решений фермы, создает отдельные папки для веб-приложений и папку для решений развернутых глобально, выгружает решения в папки соответствующих веб-приложений и папку Global
function BackUpSolutions($BackupDirectory) { $DateFolderName = Get-Date -format "yyyyMMddHHmmss" $FBackupDirectory = "$BackupDirectory$DateFolderName" New-Item -ItemType Directory -Force -Path "$BackupDirectory" | Out-Null Write-Host "$BackupDirectory - Export Started " -ForegroundColor Yellow foreach ($Solution in Get-SPSolution) { $DeploymentState = $Solution.DeploymentState if (($DeploymentState -eq "GlobalDeployed") -or ($DeploymentState -eq "GlobalAndWebApplicationDeployed")) { $GlobalDirectory = "Global" $SubDirectory = "$FBackupDirectory$GlobalDirectory" New-Item -ItemType Directory -Force -Path "$SubDirectory" | Out-Null ExportSolution $Solution $SubDirectory } if (($DeploymentState -eq "WebApplicationDeployed") -or ($DeploymentState -eq "GlobalAndWebApplicationDeployed")) { $DeployedWebApplications = $Solution.DeployedWebApplications foreach ($Application in $DeployedWebApplications) { $ApplicationName = $Application.DisplayName $SubSDirectory = "$FBackupDirectory$ApplicationName" New-Item -ItemType Directory -Force -Path "$SubSDirectory" | Out-Null ExportSolution $Solution $SubSDirectory } } } } function ExportSolution($Solution, $SubDirectory) { $Id = $Solution.SolutionID $Title = $Solution.Name $Filename = $Solution.SolutionFile.Name try { $Solution.SolutionFile.SaveAs("$SubDirectory$Filename") Write-Host "Directory: $SubDirectory , Solution: $Title - Exported" -ForegroundColor Green } catch { Write-Host "Directory: $SubDirectory , Solution: $Title - Error $_" -ForegroundColor Red } } BackUpSolutions "C:Tempwsp"
Опубликовано: 06.01.2014
Автор: Сергей Снитко