Deploy WSP with SharePoint 2010 PowerShell .

本文介绍如何使用PowerShell脚本部署SharePoint 2010解决方案,并提供了具体的XML配置文件和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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值