Deploy WSP with SharePoint 2010 PowerShell
The stsadm command was replaced by PowerShell cmdlets in 2010. To deploy on a Produciton, QA or DEV server you may probably need PowerShell scripts (with .ps1 suffix). However if you prefer GUI, you'll thank to Visual Studio 2010 as development and deployment is as simple as a few clicks.
You can use PowerShell to deploy on non-local servers and/or carry admin tasks. If the following message shows on the first line
then you may grant yourself access to the farm. Run as Aministrator and run
Then
Get-SPShellAdmin
It will show shell admin accounts. You mast be in that group. PowerShell authorization is very different to Central Admin, where you perform all tasks using Application Pool's account. If you cannot add yourself to SPShellAdmin group, try to add machinename\user instead and always run as administrator from the SharePoint 2010 group in Start Menu.
Make sure no warning message comes when you run SharePoint PowerShell then you can create an XML file and a script file to deploy wsp solution files.
config.xml:
PowerShell script:
When the two files are prepared, at PowerShell prompt type .\Install.ps1 will invoke the script. All you need to modify is the config.xml file.
Script is modified from:
http://stsadm.blogspot.com/2010/06/deploying-sharepoint-2010-solution.html
You can use PowerShell to deploy on non-local servers and/or carry admin tasks. If the following message shows on the first line
The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered.
then you may grant yourself access to the farm. Run as Aministrator and run
Add-SPShellAdmin -UserName domain\user
Then
Get-SPShellAdmin
It will show shell admin accounts. You mast be in that group. PowerShell authorization is very different to Central Admin, where you perform all tasks using Application Pool's account. If you cannot add yourself to SPShellAdmin group, try to add machinename\user instead and always run as administrator from the SharePoint 2010 group in Start Menu.
Make sure no warning message comes when you run SharePoint PowerShell then you can create an XML file and a script file to deploy wsp solution files.
config.xml:
<Solutions> <Solution Path="VisualWebPartProject.wsp" CASPolicies="false" GACDeployment="true"> <WebApplications> <WebApplication>http://deploy</WebApplication> </WebApplications> </Solution> </Solutions>
PowerShell script:
#install.ps1 function Install-Solutions([string]$configFile) { if ([string]::IsNullOrEmpty($configFile)) { return } [xml]$solutionsConfig = Get-Content $configFile if ($solutionsConfig -eq $null) { return } $solutionsConfig.Solutions.Solution | ForEach-Object { [string]$path = $_.Path $path = "$pwd\$path" [bool]$gac = [bool]::Parse($_.GACDeployment) [bool]$cas = [bool]::Parse($_.CASPolicies) $webApps = $_.WebApplications.WebApplication Install-Solution $path $gac $cas $webApps } } function Install-Solution([string]$path, [bool]$gac, [bool]$cas, [string[]]$webApps = @()) { $spAdminServiceName = "SPAdminV4" [string]$name = Split-Path -Path $path -Leaf $solution = Get-SPSolution $name -ErrorAction SilentlyContinue if ($solution -ne $null) { #Retract the solution if ($solution.Deployed) { Write-Host "Retracting solution $name..." if ($solution.ContainsWebApplicationResource) { $solution | Uninstall-SPSolution -AllWebApplications -Confirm:$false } else { $solution | Uninstall-SPSolution -Confirm:$false } Stop-Service -Name $spAdminServiceName Start-SPAdminJob -Verbose Start-Service -Name $spAdminServiceName #Block until we're sure the solution is no longer deployed. do { Start-Sleep 2 } while ((Get-SPSolution $name).Deployed) } #Delete the solution Write-Host "Removing solution $name..." Get-SPSolution $name | Remove-SPSolution -Confirm:$false } #Add the solution Write-Host "Adding solution $name..." $solution = Add-SPSolution $path #Deploy the solution if (!$solution.ContainsWebApplicationResource) { Write-Host "Deploying solution $name to the Farm..." $solution | Install-SPSolution -GACDeployment:$gac -CASPolicies:$cas -Confirm:$false } else { if ($webApps -eq $null -or $webApps.Length -eq 0) { Write-Warning "The solution $name contains web application resources but no web applications were specified to deploy to." return } $webApps | ForEach-Object { Write-Host "Deploying solution $name to $_..." $solution | Install-SPSolution -GACDeployment:$gac -CASPolicies:$cas -WebApplication $_ -Confirm:$false } } Stop-Service -Name $spAdminServiceName Start-SPAdminJob -Verbose Start-Service -Name $spAdminServiceName #Block until we're sure the solution is deployed. do { Start-Sleep 2 } while (!((Get-SPSolution $name).Deployed)) } $pwd=Get-Location Install-Solution $pwd+"/config.xml"
When the two files are prepared, at PowerShell prompt type .\Install.ps1 will invoke the script. All you need to modify is the config.xml file.
Script is modified from:
http://stsadm.blogspot.com/2010/06/deploying-sharepoint-2010-solution.html
Comments