PowerShell - Wait for Retract / Uninstall before Remove





0/5 (0 vote)
Wait for Retract / Uninstall before Remove.
So, as a part of PowerShell commands, we have UnInstall-SPSolution command for retracting a SharePoint solution and Remove-SPSolution command to remove the solution from any scope.
When you execute these commands in a sequence in a script (.ps1) file, Usually we end up with an error saying
Remove-SPSolution : The solution "XXXX.wsp" has been deployed in the farm. Please retract the deployment before removing the solution.You can also use the
-override parameter to forcibly remove the solution, but you will not be able to retract the solution deployment.
So we need to wait until the retraction / uninstallation is completed, to remove solution. But how we can wait in Automated scripts (.ps1) files?
Below is the way to wait . . .
I have three SharePoint solutions deployed to farm and I want a single script file which can uninstall and remove the solutions. Look at below PowerShell script.
add-pssnapin "microsoft.sharepoint.powershell" Set-ExecutionPolicy unrestricted echo " " echo "Uninstalling Project1"Now here is the output:$sln = get-spsolution -identity SharepointProject1.wsp uninstall-spsolution -identity SharepointProject1.wsp -confirm:$false echo "Started solution retraction..."while($sln.JobExists) { echo " > Uninstall in progress..." start-sleep -s 10 } remove-spsolution -identity SharepointProject1.wsp -confirm:$false echo "Removed Project1" echo " " echo "Uninstalling Project2"$sln = get-spsolution -identity SharepointProject2.wsp uninstall-spsolution -identity SharepointProject2.wsp -confirm:$false echo "Started solution retraction..."while($sln.JobExists) { echo " > Uninstall in progress..." start-sleep -s 10 } remove-spsolution -identity SharepointProject2.wsp -confirm:$false echo "Removed Project2" echo " " echo "Uninstalling Project3"$sln = get-spsolution -identity SharepointProject3.wsp uninstall-spsolution -identity SharepointProject3.wsp -confirm:$false echo "Started solution retraction..."while($sln.JobExists) { echo " > Uninstall in progress..." start-sleep -s 10 } remove-spsolution -identity SharepointProject3.wsp -confirm:$false echo "Removed Project3"
Task accomplished!