我目前正在尝试编写一个小的PowerShell脚本(我没有使用Powershell脚本编写经验,因此希望将其用作测试),它循环遍历我们的svn存储库,计算已经通过评论“已审核”进行了多少次提交by; No-one“因为这表示未经审核的提交。
我目前有以下
$repositorys = @("Path1", "path2","path3","path4")
$matches = 0
foreach ($path in $repositorys){
"Path: {0}" -f $path.tostring()
( [xml] (svn log --xml $path)).log.logentry | Where-Object {$_.msg -imatch "(Reviewed By: (no(.*)one))" } | measure-object | format-list
}
根据发现的匹配数量,这给了我带计数的输出
Count Average Sum Maximum Minimum Property
----- ------- --- ------- ------- --------
1
如果我删除了measure-object,那么我将获得SVN提交的详细信息(修订版,作者,消息,日期等)
基本上我希望能够报告的是未经审核的提交的数量和细节(基本上是上述两种方法之间的合并)。所以我的报告看起来像
路径1:
Number of un-reviewed commits: xx
Revision Author
-------- -------
x x
谁能开导我?这可能吗?
答案 0 :(得分:5)
这是Tee-Object cmdlet的用途。
[xml] (svn log --xml $path)).log.logentry |
? {$_.msg -imatch "(Reviewed By: (no(.*)one))" } |
tee -variable temp |
measure |
% { "Number of un-reviewed commits: $($_.count)" }
$temp | fl
这里没有任何东西可以通过手动分解管道而无法做到。分配变量,但“tee”是一个方便的快捷方式。
它的另一个常见用途是将中间结果写入文件。有关详细信息,请参阅“help tee -examples”。
答案 1 :(得分:2)
$x = ( [xml] (svn log --xml $path)).log.logentry | Where-Object {$_.msg -imatch "(Reviewed By: (no(.*)one))" }
Write-Host Number of un-reviewed commits: ($x.Count)
$x | fl
因此,您只需输出数字,然后从管道中删除您的集合以进行打印。