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)
}