24 listopada 2011

Automatyzacja SharePoint'a to konieczna konieczność

Automatyzacja, automatyzacja, automatyzacja


Często zdarza mi się klikać jak przysłowiowa "małpa". Wielokrotnie powtarzać pewne akcje zamiast daną czynność zautomatyzować. Wynika to chyba z głupoty, ponieważ człowiek leniwy by to po prostu zrobił, żeby się nie narobić.

Kilka dni temu musiałem naprawić za pomocą skrytpu kilka witryn (chyba tak się tłumaczy site collection?), które na środowisku produkcyjnym przeszły jakieś niebezpieczne mutacje. Otrzymałem od zespołu wsparcia trzy backup'y wybranych witryn i zacząłem testowanie.



  1. Przygotowałem pustą bazę kontentową
  2. Dodałem ją do wybranej aplikacji  webowej
  3. Odtworzyłem skryptem backupy witryn do nowej bazy kontentowej
  4. Zmieniłem administratorów witryn na lokalne konta
  5. Uruchamiałem skrypt naprawiający bajzel na witrynach
  6. i tak w kółko (przynajmniej z 5 iteracji).

Pózniej jeszcze z 3 iteracje na środowisku testowych i w sumie 8 iteracji powyższej listy daje klikania przynajmniej na godzinę.

Polak mądry po szkodzie


Po napisaniu "fix-bajzelskrypt.ps1" pozostał kac moralny. Takie ilości klikania pozostawiają uszczerbek na psychice. W ramach terapii w 15 MINUT napisałem skrypt, który to wszystko zrobi poprawnie i szybko za mnie.

$contentDabaseName = "WSS_Content_001"
$webApplicationUrl = "http://webapplication"
$siteCollectionBackupsDir = "c:\backup\sitecollections\"
$siteCollectionPrefix = "http://webapplication/sites/"
$primarySiteOwner = "Domain\User1"
$secondarySiteOwner = "Domain\User2"

Remove-SPContentDatabase $contentDabaseName
New-SPContentDatabase -Name $contentDabaseName -WebApplication $webApplicationUrl > $out-null
$backupFiles = dir $siteCollectionBackupsDir -Filter *.bak
foreach($backup in $backupFiles)
{
 $siteCollectionUrl = $siteCollectionPrefix + $backup.Name.Replace(".bak","");
 $siteCollectionBackupFile = $siteCollectionBackupsDir+$backup.Name
 Restore-SPSite -Identity $siteCollectionUrl -Path $siteCollectionBackupFile -force -confirm:$false -DatabaseName $contentDabaseName
 Set-SPSite –identity $siteCollectionUrl -Owner $primarySiteOwner –SecondaryOwner $secondarySiteOwner
}

Zanim napisałem ten skrypt wydawało mi się, że kilka kliknięć to chwila, a skrypt będę pisał godzinę. Nie doceniłem rozszerzeń PowerShell'a dla SharePoint'a.

Co mógłbym automatyzować, a czego czasami nie robię:
  • Operacje w Visual Studio (np. process attach)
  • Operacje kopiowania na plikach
  • Skrypty SQL i zmienne w skryptach
  • Operacje konfiguracji SharePoint'a
  • itd
Hope this helps.

Brak komentarzy:

Prześlij komentarz

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.