api - Cómo actualizar por lotes múltiples elementos de trabajo en TFS
powershell bug-tracking (2)
Puedes hacer esto en Excel :
- 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
- Realice sus ediciones en bloque
- 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