Here is a Powershell Script to that deploys a WSP and activates a SharePoint feature
$solutionName="solutionname.wsp" $featureName="featurename" $SolutionPath="C:\wsp\"+$solutionName if($args[0] -eq 'DEV') { $webAppName="http://url" } elseif ($args[0] -eq 'QA') { $webAppName="http://url" } elseif ($args[0] -eq 'PROD') { $webAppName="http://url" } else { Write-Host "$(Get-Date -Format o) Environment not specified - please pass appropriate environment to deploy -" exit } Function WaitForJobToFinish[string]$SolutionFileName) { $JobName = "*solution-deployment*$SolutionFileName*" $job = Get-SPTimerJob | ?{ $_.Name -like $JobName } if ($job -eq $null) { Write-Host 'Timer job not found' } else { $JobFullName = $job.Name Write-Host -NoNewLine "Waiting to finish job $JobFullName" while ((Get-SPTimerJob $JobFullName) -ne $null) { Write-Host -NoNewLine . Start-Sleep -Seconds 2 } Write-Host "Finished waiting for job.." } } $powershellSnapin = "Microsoft.Sharepoint.Powershell" if ((Get-PSSnapin -Name $powershellSnapin -ErrorAction SilentlyContinue) -eq $null ) { Write-Host "--------------------------------- Adding sharpoint powershell snapin if not existing-------------------------" Add-PsSnapin $powershellSnapin } if($DeployWebURL -eq '') { Write-Host "$(Get-Date -Format o) Incorrect Environment specified - please pass 'DEV/QA/PROD' -" exit } Write-Host 'Going to disable feature ' $featureName disable-spfeature -identity $featureName -confirm:$false -url $webAppName Write-Host 'Going to uninstall feature ' $featureName uninstall-spfeature -identity $featureName -confirm:$false -force Write-Host 'Going to uninstall solution '$solutionName Uninstall-SPSolution -identity $solutionName -confirm:$false Write-Host 'Waiting for job to finish' WaitForJobToFinish Write-Host 'Going to remove solution' Remove-SPSolution –identity $solutionName -confirm:$false Write-Host 'Going to add solution '$SolutionPath Add-SPSolution $SolutionPath Write-Host 'Going to install solution to web application '$solutionName Install-SPSolution –identity $solutionName –GACDeployment do { Write-Host “.” -NoNewline -ForeGroundColor Green; Start-Sleep -Seconds 5; try { write-host 'Verifying if the solution installation is valid' $testsolution = Get-SPSolution -Identity $solutionName } catch {} }while(!$testsolution); Write-Host 'Going to enable Feature ' $featureName Enable-spfeature -identity $featureName -confirm:$false -url $webAppName Write-Host 'Enabled Feature' $featureName Remove-PsSnapin Microsoft.SharePoint.PowerShell
Save the PS as Deploy.ps1
Change the Parameters required for :
- $solutionName=”solutionname.wsp”
- $featureName=”featurename” and
- $webAppName accordingly and deploy the commands via .\Deploy.ps1 Dev or .\Deploy QA or .\Deploy.ps1 Prod