使用内联 PowerShell 任务计算 Azure 管道中任务的运行时间

Calculate elapsed time for a task in azure pipeline using inline PowerShell tasks

我正在尝试在 inline 模式下使用 PowerShell 任务来计算 Azure Pipeline 中的任务经过的时间。简化的设置看起来像附件中的图像。下面提到了内联代码。我遇到了低于指定的错误。

Calculating Elapsed Time...
Cannot find an overload for "op_Subtraction" and the argument count: "2".
At D:\a\_temp\ba6b91f4-ef47-4a51-8088-efc6bcda310d.ps1:5 char:1
+ $duration_min = $end_time - $start_time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest
 
##[error]PowerShell exited with code '1'.

衡量构建任务所用时间的正确方法是什么?

管道设置:

Get Start Time 内联 powershell 任务中的代码:

$start_time = Get-Date
Write-Host "Scanning Start Timestamp: $($start_time)"

Calculate Elapsed Time 内联 powershell 任务中的代码:

Write-Host "Calculating Elapsed Time..."
$end_time = Get-Date
$duration_min = $end_time - $start_time
Write-Host ("Total Time Elapsed in Minutes: ", $duration_min.TotalMinutes)

任务之间的变量是独立的。要在任务之间传递值,我们可以使用管道变量。在您的设置中,转到“变量”选项卡并创建一个新变量 - 例如 scan_start_time.

在“获取开始时间”任务中添加另一行

Write-Output "##vso[task.setvariable variable=scan_start_time]$($start_time)"

然后在“计算运行时间”任务中

$start_time = "$(scan_start_time)"