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!'
}
}