azure - 如何获取从 Azure Devops/VSTS/TFS 中的 "Windows Machine File Copy"任务复制的文件总数?

标签 azure powershell tfs azure-devops azure-pipelines

首先我要说的是,我不知道这是否可行,但我希望如此。

我在 Azure Devops 中有多个作业运行“Windows 计算机文件复制”任务。 Documentation here .

在任务日志的末尾,有一个输出显示文件总数...

2019-12-06T20:42:33.2991058Z ------------------------------------------------------------------------------
2019-12-06T20:42:33.2992182Z 
2019-12-06T20:42:33.2994274Z                Total    Copied   Skipped  Mismatch    FAILED    Extras
2019-12-06T20:42:33.2995919Z     Dirs :        29        28         0         0         0         0
2019-12-06T20:42:33.2997487Z    Files :       361       361         0         0         0         0
2019-12-06T20:42:33.2999056Z    Bytes :   89.96 m   89.96 m         0         0         0         0
2019-12-06T20:42:33.3000612Z    Times :   0:00:03   0:00:02                       0:00:00   0:00:00
2019-12-06T20:42:33.3000997Z 
2019-12-06T20:42:33.3002124Z 
2019-12-06T20:42:33.3003761Z    Speed :            31614545 Bytes/sec.
2019-12-06T20:42:33.3005534Z    Speed :            1808.998 MegaBytes/min.
2019-12-06T20:42:33.3006054Z    Ended : Friday, December 6, 2019 2:42:33 PM
2019-12-06T20:42:33.3006989Z 
2019-12-06T20:42:33.3049176Z Copying recursively from...

这个值是否作为变量存储在任何地方?有没有人能够使用这样的日志以编程方式解析其中的信息?

最佳答案

同意大牛的任命,这对于开发者来说似乎毫无意义。但是,如果有人想要这些数据,当然可以对其进行解析。

首先我们需要知道这个任务是根据什么来编译的。我们已经在github上开放了该任务的源码:WindowsMachineFileCopyV2 。可以看到这个任务是使用RoboCopy来实现文件复制的。

所以,现在,您的难题可以考虑为如何读取 Robocopy 输出并将其存储为变量

<小时/>

我想您已经知道似乎无法直接对此任务输出进行任何操作。因此,首先,您可以将 /log:{file path} 指定到此 Windows 计算机复制文件任务的参数中。

日志如下所示:

enter image description here

目前,解析出准确的值并将其存储到变量中非常容易。只需编写一个脚本来读取该值并存储它。我曾经提供过类似的solution关于如何从 shell 输出中编译出值。

此外,您可以查看此 script供更多引用。

## Create Powershell object to tally Robocopy results
$row = "" |select COPIED, MISMATCH, FAILED, EXTRAS
$row.COPIED = [int](($robo_arr[1] -split "\s+")[4]) + [int](($robo_arr[2] -split "\s+")[4])
$row.MISMATCH = [int](($robo_arr[1] -split "\s+")[6]) + [int](($robo_arr[2] -split "\s+")[6])
$row.FAILED = [int](($robo_arr[1] -split "\s+")[7]) + [int](($robo_arr[2] -split "\s+")[7])
$row.EXTRAS = [int](($robo_arr[1] -split "\s+")[8]) + [int](($robo_arr[2] -split "\s+")[8])

关于azure - 如何获取从 Azure Devops/VSTS/TFS 中的 "Windows Machine File Copy"任务复制的文件总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307208/

相关文章:

powershell - VSCode - 在单独的窗口中打开终端

c# - 如何访问工作项链接和附件历史记录

Azure 媒体服务 REST API 错误 MissingApiVersionParameter

azure - 如何通过请求响应查询Azure日志?

mysql - 使用 Powershell 中的参数执行 sql 过程

unit-testing - 在 .ps1 脚本中模拟函数

c# - TFS 构建代理和 Office PIA

powershell - TFS | VSTS - 自定义构建任务执行找不到 VstsTaskSdk.psd1

azure - 我可以在 ASE 中部署持久 Azure Function 吗

azure - 如何通过定时器触发调用Durable函数?