PowerShell Retry-Command Cmdlet zum Wiederholen von Befehlen oder Skriptblöcken im Fehlerfall

Nützliches PowerShell Retry-Command Cmdlet welches PowerShell Befehle oder Skriptblöcken im Fehlerfall solange wiederholt bis wie erfolgreich ausgeführt wurden incl. optionalem Parameter für eine Verzögerung und Anzahl der maximalen Wiederholungen.

function Retry-Command {
    [CmdletBinding()]
    Param(
        [Parameter(Position=0, Mandatory=$true)]
        [scriptblock]$ScriptBlock,
        [Parameter(Position=1, Mandatory=$false)]
        [int]$Maximum = 5,
        [Parameter(Position=2, Mandatory=$false)]
        [int]$Delay = 100
    )
    Begin {
        $Counter = 0
    }
    Process {
        do {
            $Counter++
            try {
                $ScriptBlock.Invoke()
                return
            } catch {
                Write-Error $_.Exception.InnerException.Message -ErrorAction Continue
                Start-Sleep -Milliseconds $Delay
            }
        } while ($Counter -lt $Maximum)
        throw 'Execution failed!'
    }
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert