Il est fréquent de vouloir exporter une solution depuis le catalogue de solution:
- Sauvegarde avant une installation,
- Récupération d’une solution pour analyse,
- …
La récupération d’une solution est assez simple, mais nécessite l’exploitation de PowerShell.
Export d’une unique solution
Voici un exemple de récupération d’une solution :
$sol = Get-SPSolution MaSuperSolution.wsp
$sol.SolutionFile.SaveAs("c:\Backups\MaSuperSolution.wsp")
En effet, l’objet SPSolution
possède une propriété SolutionFile
de type SPPersistedFile
.
Export de l’ensemble des solution
On peut alors aisément en déduire un script one-line pour dumper l’ensemble des solutions d’une ferme dans le dossier courant :
Get-SPSolution | % { $_.SolutionFile.SaveAs("$pwd\$($_.Name)") }
Ou encore créer une fonction avancée pour industrialiser la procédure :
function Export-SPSolution{
param(
[Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)]
[Microsoft.SharePoint.PowerShell.SPSolutionPipebind[]]$Solution,
[Parameter(Position=1)]
[string]$Outdir = $pwd
)
process{
$sol = $Solution.Read()
$outfile = Join-Path $Outdir $sol.Name
$sol.SolutionFile.SaveAs($outfile)
New-Object PSObject -Property ([ordered]@{
Solution = $Sol.Name
OutFile = $outfile
})
}
}
Qui peut alors s’utiliser de multiples manières (exemples) :
Export-SPSolution MaSuperSolution.wsp
Export-SPSolution MaSuperSolution -Outdir "C:\temp\data"
Get-SPSolution | Export-SPSolution
Get-SPSolution | ? { $_.Name -match "MaSuper" } | Export-SPSolution -Outdir "C:\temp\data"