api tfs powershell bug-tracking

api - Cómo actualizar por lotes múltiples elementos de trabajo en TFS



powershell bug-tracking (2)

Puedes hacer esto en Excel :

  1. Abra los elementos de trabajo en Excel, a través de:
    • Haga clic derecho en una consulta en Team Explorer -> abrir en Excel
    • seleccione varios elementos de trabajo en un panel de resultados WIT, luego haga clic con el botón derecho -> abrir en Excel
    • cargar Excel, use Equipo -> Importar para cargar una consulta predefinida
    • abra un archivo * .xls que ya está vinculado a TFS
  2. Realice sus ediciones en bloque
  3. Haga clic en el botón Publicar en la cinta del Equipo

Documentación completa: administración de elementos de trabajo en Excel (página de resumen, muchos y muchos enlaces dentro)

También puede editar en bloque en la interfaz web

Línea de comando de Windows :

REM make Martin Woodward fix all my bugs tfpt query /format:id "TeamProject/public/My Work Items" | tfpt workitem /update @ /fields:"Assigned To=Martin"

Powershell :

# make Bill & Steve happy $tfs = tfserver -path . -all $items = $tfs.wit.Query(" SELECT id FROM workitems WHERE [Created By] IN (''bill gates'', ''steve ballmer'')") | % { $_.Open() $_.Fields["priority"].value = 1 $_ } # note: this will be much faster than tfpt since it''s only one server call $tfs.wit.BatchSave($items)

Necesito actualizar el mismo campo al mismo valor para cientos de workitems en TFS. ¿Hay alguna manera de hacerlo en un lote en lugar de actualizarlos uno por uno manualmente?


$secpasswd = ConvertTo-SecureString $TfsPasswd -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ($TfsUserName, $secpasswd) Connect-TfsTeamProjectCollection -Server $TfsServerUrl -Collection $TfsCollection -Credential $mycreds #Get-TfsTeamProject Connect-TfsTeamProject -Project $TfsProjectName $workItems = Get-TfsWorkItem -Filter "[System.WorkItemType] = ''Bug'' AND [System.AssignedTo] = ''$TfsUserName''" foreach ($workItem in $workItems) { $tpc = $workItem.Store.TeamProjectCollection $id = $workItem.Id $store = $tpc.GetService([type]''Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore'') $wi = $store.GetWorkItem($id) $projectName = $wi.Project.Name foreach($fldName in $Fields.Keys) { $wi.Fields[$fldName].Value = $Fields[$fldName] } $wi.Save() }

Puede descargar un script detallado de cómo actualizar por lotes varios elementos de trabajo en TFS por PowerShell