среда, 7 мая 2014 г.

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:\\Temp\\wsp"
Оригинал статьи на blog.cibpoint.ru

Комментариев нет:

Отправить комментарий