Как использовать PowerShell Where-Object для возврата наборов изменений TFS, которым не назначены рабочие элементы? - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть следующая команда PowerShell для получения наборов изменений TFS с соответствующими рабочими элементами:

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
  | Select ChangesetId -exp WorkItems 
  | Format-Table ChangesetId, Id, Title -Auto

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

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
  | Select ChangesetId -exp WorkItems 
  | Where-Object {$_.WorkItems -eq $null }

Однако это, похоже, игнорирует мое предложение where и возвращает тот же список наборов изменений, что и первая команда.

Спасибо

Боз

Обновление:

Согласно предложению ниже, я попытался:

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
  | Where-Object {$_.WorkItems -eq $null }

Это не возвращает никаких строк. Однако замена -eq для -ne возвращает строки (но не те, которые мне нужны).

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Поле WorkItems на самом деле является коллекцией или рабочими элементами, поэтому проверка на ноль неверна, но подсчет 0 элементов работает:

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
  | Where-Object {$_.WorkItems.Count -eq 0 }

Кроме того, важен порядок Where и Select, как указано выше пользователем rerun, спасибо.

Боз

1 голос
/ 17 декабря 2010

Выбор объекта возвращает только те поля, которые вы запрашиваете.Таким образом, вы не увидите и не создадите объект в конвейере к тому времени, как он попадет туда, где находится объект, если вы используете объект where, прежде чем выбрать его, который должен работать.

...