PowerShell retry logic code


This is a small PowerShell retry logic code snipet so I do not have to search for one ever again.


function Add-Package($SiteFullUrl, $Creds, $PackagePath) {

    $stopLoop = $false
    $retryCount = 0
 
    do {
        try {

            # YOUR LOGIC HERE
            Connect-PnPOnline $SiteFullUrl -Credentials $Creds
            
            Add-PnPApp -Path $PackagePath -Scope Site -Publish -Overwrite -SkipFeatureDeployment -ErrorAction Stop
            
            Write-Host "`Add-Package: Job completed for $PackagePath"

            $stopLoop = $true
        }
        catch [Exception] {
            if ($retryCount -gt 30){
                Write-Host "Add-Package: Max retry for $PackagePath"
                $stopLoop = $true
            }
            else {
                Write-Host $_.Exception.Message -ForegroundColor Yello
                Write-Host "Add-Package: Could not complete retrying in 10 seconds... $PackagePath"
                Start-Sleep -Seconds 10
                $retryCount = $retryCount + 1
            }
        }
    } while ($stopLoop -eq $false)
}
Posted on

Tags: PowerShell, retry, catch PowerShell exception, function, tip, trick

Comments