首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Where-Object计算对象

从Where-Object计算对象
EN

Stack Overflow用户
提问于 2009-07-20 10:03:59
回答 2查看 6.4K关注 0票数 3

我目前正在尝试编写一个小的powershell脚本(我没有Powershell脚本编写的经验,所以我想用它作为测试),它循环遍历我们的svn存储库,并使用注释"Reviewed by;No-one“计算提交了多少次,因为这表示未审查的提交。

我目前有以下内容

代码语言:javascript
复制
$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

}

这给出了输出,其中的计数取决于它找到的匹配项的数量

代码语言:javascript
复制
          Count Average             Sum                 Maximum             Minimum             Property
          ----- -------             ---                 -------             -------             --------
              1

如果我删除了度量对象,那么我将获得SVN提交的详细信息(版本、作者、消息、日期等)。

本质上,我希望能够报告的是未审核提交的数量和详细信息(因此,本质上是上述两种方法之间的合并)。所以我的报告看起来像是

Path1:

代码语言:javascript
复制
Number of un-reviewed commits: xx
   Revision             Author
   --------             ------- 
    x                    x

有人能开导我吗??这个是可能的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-20 17:07:05

这就是 cmdlet的用途。

代码语言:javascript
复制
[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“是一个很方便的捷径。

它的另一个常见用途是将中间结果写入文件。有关详细信息,请参阅“帮助tee -examples”。

票数 6
EN

Stack Overflow用户

发布于 2009-07-20 11:23:44

在这种情况下,你必须输出两个不同的东西。我建议您将执行此工作的管道的结果保存在一个变量中,然后执行以下操作:

代码语言:javascript
复制
$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

因此,您只需输出数字,然后从流水线中丢弃您的集合以打印它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1152719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档