# 定义参数
Param (
[Parameter(Mandatory=$True)]
[Alias("Retry")]
[int]$n_retry,
[Parameter(Mandatory=$True)]
[Alias("Sleeptime")]
[int]$Sleep_time
)
$timestamp = get-date
Write-Host "[$timestamp] log : powershell started."
$Sleep_n=0
$n_retry=$n_retry+1 # running times= retry times +1
$n_error=0
do {
try{
# you want to run the command
}
catch{
$n_error=$n_error+1
$timestamp = get-date
Write-Host "failure time:[$timestamp]. failure times: [$n_error] "
Write-Host "[$timestamp] log : $($_.Exception.Message)"
Write-Host "[$timestamp] log : $($_.InvocationInfo.PositionMessage)"
}
if($n_error -gt 0)
{
if ($n_retry -gt 1)
{
$Sleep_n=$Sleep_n+1
$timestamp = get-date
Write-Host "start to sleep time:[$timestamp]. sleep times: [$Sleep_n] "
Start-Sleep -seconds $Sleep_time
$timestamp = get-date
Write-Host "end to sleep time:[$timestamp]. sleep times: [$Sleep_n] "
}
}else{
$timestamp = get-date
Write-Host "[$timestamp] log : powershell finished."
exit
}
$n_retry=$n_retry-1
#Write-Host "[$timestamp] log : retry times: [$Sleep_n]"
if($n_retry -eq 0)
{
$timestamp4 = get-date
Write-Host "[$timestamp] log : poershell failed "
[environment]::exit(1)
}
} while ($n_retry -gt 0)