14
votes

I'm a novice with the PowerShell and TFS cmdlets and I'm trying to retrieve a list of changesets in an area path, and their associated work items.

I've got as far as listing changesets since a certain date:

Get-TfsItemHistory "$/Project/Branch" -Version “D01/12/10~” -Recurse 

and also listing workitems since the same date:

Get-TfsItemHistory "$/Project/Branch" -Version "D01/12/10~" -Recurse | %{ $_.workitems }

Each query returns the same number of results, with the second query returning duplicate workitems. This seems promising, as there are many changesets to workitems, so I assume I'm not far off combining the results.

2
What's module is for Get-TfsItemHistory cmdlet ?Kiquenet
@Kiquenet It's Team Foundation Server Power Tools; not included out of the box, but available here: marketplace.visualstudio.com/…. Choose the version which matches your instance.JohnLBevan

2 Answers

12
votes

Yes, you're on the right track. Try this as a way to view workitems associated with a changeset:

Get-TfsItemHistory "$/Project/Branch" -Version "D01/12/10~" -Recurse | 
    Select ChangesetId -exp WorkItems | 
    Format-Table Id,Title -GroupBy ChangesetId -Auto
2
votes

Using Microsoft.TeamFoundation.Client view https://stackoverflow.com/a/30047077/4051367

Usage

$versionControlServer.QueryHistory

$vCSChangeSets = $versionControlServer.QueryHistory($locationToSearch, $latest, 0, $recursionType, $userName, $versionFrom, $versionTo, [int32]::MaxValue, $true ,$false, $false, $true) 
$TargetChangeSetChangeItems = @()  


$TargetChangeSetChangeItems = foreach ($vCSChangeSet in $vCSChangeSets) 
{   
    foreach ($vCSChange in $vCSChangeSet.Changes) 
    { 
        $vCSItem =  $vCSChange.Item 

        # MORE CODE HERE, OMMITTED
    }
}