Gestione dei solution package con PowerShell

Molto spesso mi è capitato di trovarmi da clienti e avere la necessità di configurare una nuova farm SharePoint con le stesse caratteristiche di una seconda farm esistente. Di solito procede tutto bene fino a quando si tratta di installare le solution custom. Nella migliore delle ipotesi i solution package (wsp) ci sono “ma non so se è la versione installata”, nella peggiore i wsp si sono dati alla macchia.

Per fortuna Super Windows PowerShell ci viene in aiuto. Grazie allo script seguente è possibile scaricare tutti i solution package installati in una farm SharePoint. Ovviamente, lavorando con i filtri è possibile restringere il campo a wsp specifici, come riportato nel secondo esempio.

(Get-SPFarm).Solutions | ForEach-Object{

$filepath = "C:\WSP\" + $_.Name;

## In alternativa è possibile salvare i wsp nel path da dove viene ## eseguito lo script PowerShell utilizzando la riga seguente

## $filepath = (Get-Location).Path + "\" + $_.Name;

$_.SolutionFile.SaveAs($filepath)

}

Nel prossimo esempio utilizzeremo lo stesso script precedente, ma selezionando solo i wsp il cui nome contiene “GreenTeam”.

(Get-SPFarm).Solutions | ?{$_.Name –match "GreenTeam"} | ForEach-Object{

$filepath = "C:\WSP\" + $_.Name;

## In alternativa è possibile salvare i wsp nel path da dove viene ## eseguito lo script PowerShell utilizzando la riga seguente

## $filepath = (Get-Location).Path + "\" + $_.Name;

$_.SolutionFile.SaveAs($filepath)

}

Allo stesso modo del download è possibile automatizzare l’upload nel solution store dei wsp leggendo il contenuto di una cartella locale.

$filepath = "C:\WSP\"

$Files = get-childitem $filepath -include *.wsp -recurse

ForEach ($File in $Files){

Add-SPSolution -LiteralPath $File.FullName

write-host "$File.Name added to the solution store"

}

Eventualmente è anche possibile definire il deploy delle solution presenti nel solution store, anche se a dire la verità viste le possibili differenze tra le diverse solution non so se sia possibile creare uno script adatto a tutti. In ogni caso, diciamo “per accademia”, ecco come fare.

$webapp = Get-SPWebApplication http://intranet

Get-SPSolution | ForEach-Object {

Write-Host $_.SolutionId

Install-SPSolution $_.SolutionId -Force -GACDeployment -WebApplication $webapp

}

Happy PoSH
– Riccardo Bourne


One Comment on “Gestione dei solution package con PowerShell”

  1. salvodif scrive:

    perfetto, segno🙂


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...