Here is the Power Shell script to deploy any kind of SharePoint farm solution.
Note:
1. Make sure that, your solution should be in the same directory from where you are running the script.
2. Replace your own solution name @ line # 5
3. Pass necessary parameters to Install-SPSolution command.
4. Save file with .ps1 as extension. Example: psDeploy.ps1
5. Create .bat file and call the .ps1 file in it. Example : Deploy.bat
cd /d %~dp0
powershell -noexit -file ".\psDeploy.ps1" "%CD%"
pause
6. Once done, directly run the .bat file. No need of launching PowerShell console to execute.
-----------------------------------------------------------------------------------------------------------
Add-PsSnapin Microsoft.SharePoint.PowerShell
Write-Host 'Poweshell Script will initialize parameters'
$CurrentDir=$args[0]
# Replace respective solution
$solutionName="sp.web.webparts.wsp"
$SolutionPath=$CurrentDir + "\"+$solutionName
$logfile=$CurrentDir + "\log.log"
Start-Transcript $logfile
$errorActionPreference = 'Inquire'
# As we are performing deploy and redeploy solutions in single click we will get a known exception which is not requires to handle
# so that we can continue the next statement.
$solution = Get-SPSolution $solutionName -ErrorAction SilentlyContinue
try
{
if ($solution -ne $null)
{
if($solution.Deployed)
{
try
{
# Gets the feature attrbutes to log the feature Id information
# $feature= Get-SPFeature -Identity $featureName
# Write-Host 'Powershell Script will now disable feature:' $feature.Id
# Disable-SPFeature -Identity $featureName -Confirm:$false -force
}
# Display and log the feature deactivation failure message with feature Id
catch [SPException]
{
Write-Error 'An error occured while deactivating the feature' $featureId.Id
}
Write-Host 'Poweshell Script will now retract solution:' $solutionName
Uninstall-SPSolution -Identity $solutionName -AllWebApplications -Confirm:$false
Write-Host 'Poweshell Script is waiting for administrative timer jobs to complete...'
while ($Solution.JobExists)
{
Start-Sleep 2
}
}
Write-Host 'Poweshell Script will now remove solution:' $solutionName
Remove-SPSolution -Identity $solutionName -Confirm:$false
}
Write-Host 'Poweshell Script will now add solution:' $solutionName
Add-SPSolution $SolutionPath
Write-Host 'Poweshell Script will now deploy solution:' $solutionName
Install-SPSolution -Identity $solutionName -GACDeployment -AllWebApplications
Write-Host 'Poweshell Script is waiting for administrative timer jobs to complete...'
while ($Solution.JobExists)
{
Start-Sleep 2
}
Write-Host 'Poweshell Script has finished deployment of solution:' $solutionName
}
# We can get an unknow error while deploying/redeploying the solution
# so need to dispaly and log the exception details
catch [system.Exception]
{
Write-Error 'An Unknown error occured while trying to deploy/redeploying the solution:' $_.Exception.Message
}
Stop-Transcript
Remove-PsSnapin Microsoft.SharePoint.PowerShell
------------------------------------------------------------------------------------------------------------
Note:
1. Make sure that, your solution should be in the same directory from where you are running the script.
2. Replace your own solution name @ line # 5
3. Pass necessary parameters to Install-SPSolution command.
4. Save file with .ps1 as extension. Example: psDeploy.ps1
5. Create .bat file and call the .ps1 file in it. Example : Deploy.bat
cd /d %~dp0
powershell -noexit -file ".\psDeploy.ps1" "%CD%"
pause
6. Once done, directly run the .bat file. No need of launching PowerShell console to execute.
-----------------------------------------------------------------------------------------------------------
Add-PsSnapin Microsoft.SharePoint.PowerShell
Write-Host 'Poweshell Script will initialize parameters'
$CurrentDir=$args[0]
# Replace respective solution
$solutionName="sp.web.webparts.wsp"
$SolutionPath=$CurrentDir + "\"+$solutionName
$logfile=$CurrentDir + "\log.log"
Start-Transcript $logfile
$errorActionPreference = 'Inquire'
# As we are performing deploy and redeploy solutions in single click we will get a known exception which is not requires to handle
# so that we can continue the next statement.
$solution = Get-SPSolution $solutionName -ErrorAction SilentlyContinue
try
{
if ($solution -ne $null)
{
if($solution.Deployed)
{
try
{
# Gets the feature attrbutes to log the feature Id information
# $feature= Get-SPFeature -Identity $featureName
# Write-Host 'Powershell Script will now disable feature:' $feature.Id
# Disable-SPFeature -Identity $featureName -Confirm:$false -force
}
# Display and log the feature deactivation failure message with feature Id
catch [SPException]
{
Write-Error 'An error occured while deactivating the feature' $featureId.Id
}
Write-Host 'Poweshell Script will now retract solution:' $solutionName
Uninstall-SPSolution -Identity $solutionName -AllWebApplications -Confirm:$false
Write-Host 'Poweshell Script is waiting for administrative timer jobs to complete...'
while ($Solution.JobExists)
{
Start-Sleep 2
}
}
Write-Host 'Poweshell Script will now remove solution:' $solutionName
Remove-SPSolution -Identity $solutionName -Confirm:$false
}
Write-Host 'Poweshell Script will now add solution:' $solutionName
Add-SPSolution $SolutionPath
Write-Host 'Poweshell Script will now deploy solution:' $solutionName
Install-SPSolution -Identity $solutionName -GACDeployment -AllWebApplications
Write-Host 'Poweshell Script is waiting for administrative timer jobs to complete...'
while ($Solution.JobExists)
{
Start-Sleep 2
}
Write-Host 'Poweshell Script has finished deployment of solution:' $solutionName
}
# We can get an unknow error while deploying/redeploying the solution
# so need to dispaly and log the exception details
catch [system.Exception]
{
Write-Error 'An Unknown error occured while trying to deploy/redeploying the solution:' $_.Exception.Message
}
Stop-Transcript
Remove-PsSnapin Microsoft.SharePoint.PowerShell
------------------------------------------------------------------------------------------------------------
No comments:
Post a Comment