2009-07-20 5 views
2

В настоящее время я пытаюсь написать небольшой скрипт powershell (у меня нет опыта написания сценариев Powershell, поэтому он хотел использовать это как тест), который проходит через наши репозитории svn, подсчитывая, сколько было сделано коммитов с комментарием «Reviewed by; No-one», поскольку это указывает на непросмотренную фиксацию.Подсчет объектов из Where-Object

Я в настоящее время имеют следующие

$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 

Если удалить меру-объект, то я получаю сведения о SVN-фиксации (ревизия, автор, сообщение, дата и т. д.)

По существу, я хочу, чтобы иметь возможность сообщать, это количество нерассмотренных коммитов и детали (см. так что существенно слияние между двумя описанными выше методами). Поэтому у меня есть отчет, который выглядит как

Path1:

Number of un-reviewed commits: xx 
    Revision    Author 
    --------    ------- 
    x     x 

Может кто-нибудь просветить меня ?? Это возможно?

ответ

5

Это то, что для командлета Tee-Object.

[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-examples».

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 

Таким образом, вы просто вывести номер, а затем просто уронить свою коллекцию из трубопровода на печать Это.

Смежные вопросы