Tuesday, July 7, 2015

Deleting all wsp files deployed within SharePoint

Sometimes if it is required to delete all deployed custom solutions with SharePoint Farm using Power Shell then below script can assist you to get the required job done.

[CmdletBinding()]
Param(
   [Parameter(Mandatory=$true,Position=1)]
   [bool]$Confirm
)

function LoadSharePointPowerShellEnvironment
{
    write-host "Setting up PowerShell environment for SharePoint"
    write-host
    Add-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue
    write-host "SharePoint PowerShell Snapin loaded." -foregroundcolor Green
    write-host
}

LoadSharePointPowerShellEnvironment

$AdminServiceName = "SPAdminV4"
$WasAdminServiceRunning = $true;

if ($(Get-Service $AdminServiceName).Status -eq "Stopped")
{
    write-host "[[STEP]] Starting SharePoint Administration Service since it is not already started."
    write-host

    $WasAdminServiceRunning = $false;
    Start-Service $AdminServiceName

    write-host "[[STEP]] SharePoint Administration Service Started"     write-host
}

Start-SPAssignment -Global;
$solutions = Get-SPSolution
foreach($solution in $solutions)
{
    if($solution -ne $null)
    {
        $solutionName = $solution.Name
        if($solution.Deployed)
        {
            Write-Host "Uninstalling solution $solutionName..." -ForegroundColor Yellow
            write-host
            if($solution.DeployedWebApplications.Count -gt 0)
            {
                Uninstall-SPSolution -Identity $solution -AllWebApplications -Confirm:$Confirm
            }
            else
            {
                Uninstall-SPSolution -Identity $solution -Local:$true -Confirm:$Confirm
            }
            do
            {
                  Start-Sleep 5;
                  $solution = Get-SPSolution $solution;
            } while($solution.JobExists -or $solution.Deployed)
            Write-Host "Unistalled solution $solutionName successfully."
            write-host
        }

        Write-Host "Removing solution $solutionName..."
        write-host
        Remove-SPSolution -Identity $solution -Confirm:$Confirm
        do
        {
              Start-Sleep 5;
              $solution = Get-SPSolution $solution -ErrorAction SilentlyContinue
        } while($solution -ne $null)
        Write-Host "Removed solution $solutionName successfully."
        write-host
    }
}
Stop-SPAssignment -Global;

if (-not $WasAdminServiceRunning)
{
    write-host "[[STEP]] Stopping SharePoint Administration Service."
    write-host
        Stop-Service $AdminServiceName
    write-host "[[STEP]] SharePoint Administration Service Stopped."
    write-host
}

Write-Host "Farm solution store cleanup finished"

No comments:

Post a Comment