@@ -459,7 +459,7 @@ Millisecond wait next check
459459.PARAMETER Timeout
460460Millisecond timeout
461461.OUTPUTS
462- Bool. Return tas is running.
462+ Bool. $True Return task is done within Timeout, $False if not
463463#>
464464 [OutputType([bool])]
465465 [CmdletBinding()]
@@ -479,21 +479,88 @@ Bool. Return tas is running.
479479
480480 process {
481481 $isRunning = $true;
482- if ($wait -le 0) { $wait = 500; }
483- if ($timeOut -lt $wait ) { $timeOut = $wait + 5000; }
482+ if ($Wait -le 0) { $Wait = 500; }
483+ if ($Timeout -lt $Wait ) { $Timeout = $Wait + 5000; }
484484 $timeStart = [DateTime]::Now
485- $waitTime = $timeStart
486485
487- while ($isRunning -and ($timeStart - [DateTime]::Now).Milliseconds -lt $timeOut) {
488- $now = [DateTime]::Now
489- if (($now - $waitTime).TotalMilliseconds -ge $wait) {
490- $waitTime = $now;
491- $isRunning = Get-PveTaskIsRunning -PveTicket $PveTicket -Upid $Upid
492- }
486+ while ($isRunning -and ([DateTime]::Now - $timeStart).TotalMilliseconds -lt $Timeout) {
487+ $isRunning = Get-PveTaskIsRunning -PveTicket $PveTicket -Upid $Upid
488+ Start-Sleep -Milliseconds $Wait
489+ }
490+
491+ #check timeout
492+ return ([DateTime]::Now - $timeStart).TotalMilliseconds -lt $Timeout
493+ }
494+ }
495+
496+ function Wait-PveTaskIsFinishedWithProgress {
497+ <#
498+ .DESCRIPTION
499+ Wait for a task to finish, show Powershell Progressbar while waiting
500+ .PARAMETER PveTicket
501+ Ticket data connection.
502+ .PARAMETER Upid
503+ Upid task e.g UPID:pve1:00004A1A:0964214C:5EECEF11:vzdump:134:root@pam:
504+ .PARAMETER Wait
505+ Millisecond wait next check
506+ .PARAMETER Timeout
507+ Millisecond timeout
508+ .PARAMETER ProgressActivityText
509+ Acitivity (Text) for Write-Progress, defaults to Upid when empty
510+ .PARAMETER ProgressStatusText
511+ Status-Text for Write-Progress, default is "Waiting...", is shown in front of remaining time and percent
512+ .PARAMETER ProgessActivityId
513+ Id for Write-Progress, change when other Write-Progress is already shown
514+ .OUTPUTS
515+ Bool. $True Return task is done within Timeout, $False if not
516+ #>
517+ [OutputType([bool])]
518+ [CmdletBinding()]
519+ Param(
520+ [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)]
521+ [PveTicket]$PveTicket,
522+
523+ [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]
524+ [string]$Upid,
525+
526+ [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)]
527+ [int]$Wait = 500,
528+
529+ [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)]
530+ [int]$Timeout = 10000,
531+
532+ [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)]
533+ [string]$ProgressActivityText,
534+
535+ [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)]
536+ [string]$ProgressStatusText = "Waiting...",
537+
538+ [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)]
539+ [int]$ProgessActivityId = 1
540+ )
541+
542+ process {
543+ $isRunning = $true;
544+ if ($Wait -le 0) { $Wait = 500; }
545+ if ($Timeout -lt $Wait) { $Timeout = $Wait + 5000; }
546+ if ($null -eq $ProgressActivityText -OR $ProgressActivityText -eq "") { $ProgressActivityText = $Upid; }
547+ $timeStart = [DateTime]::Now
548+ $waitTimeMs = $timeStart
549+ $timePercent = 0
550+
551+ while ($isRunning -and ([DateTime]::Now - $timeStart).TotalMilliseconds -lt $Timeout) {
552+ $waitTimeMs = $([DateTime]::Now - $timeStart).TotalMilliseconds
553+ $timePercent = $waitTimeMs * (100 / $Timeout)
554+ Write-Progress -Id $ProgessActivityId -Activity $ProgressActivityText -Status "$($ProgressStatusText) ($([Math]::Round($waitTimeMs/1000))/$([Math]::Round($Timeout/1000)) Seconds)" -PercentComplete $timePercent
555+ $isRunning = Get-PveTaskIsRunning -PveTicket $PveTicket -Upid $Upid
556+ Start-Sleep -Milliseconds $Wait
493557 }
494558
559+ # end Write-Progress
560+ Write-Progress -Id $ProgessActivityId -Activity $ProgressActivityText -Completed
561+
495562 #check timeout
496- return ($timeStart - [DateTime]::Now).Milliseconds -lt $timeOut
563+ return ([DateTime]::Now - $timeStart).TotalMilliseconds -lt $Timeout
497564 }
498565}
499566
@@ -32855,3 +32922,8 @@ PveResponse. Return response.
3285532922}
3285632923
3285732924
32925+
32926+
32927+
32928+
32929+
0 commit comments