Пример скрипта, который обновляет во множестве проектов TFS шаблоны рабочих элементов.
cls
# Путь к команде witadmin
cd 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE'
# Рабочие элементы, которые необходимо обновить
$wits=@('Bug','Change Request','Issue','Requirement','Risk','Shared Steps','Task','Test Case')
# Имя сервера
$srv='http://tfs:8080/tfs/infotecstc1'
# Проекты
$projects=@('Project1','Project2','Project3')
# Путь к шаблонам рабочих элементов
$fld='C:\TFS Template\Company Template v1.00\WorkItem Tracking\TypeDefinitions'
# Служебная переменная (общее время выполнения)
$gen_sec=0
foreach ($p in $projects)
{
$prj_sec=0
write-host ' '
write-host '---------- '
write-host 'Проект ' -nonewline
write-host $p -nonewline -foregroundcolor Red
write-host '... '
write-host ' '
foreach ($w in $wits)
{
write-host 'Загрузка рабочего элемента ' -nonewline
write-host $w -nonewline -foregroundcolor Red
write-host ': ' -nonewline
$sec=(measure-command {$outtext=.\witadmin importwitd /collection:$srv /p:$p /f:$fld'\'$w'.xml'}).totalseconds
}
$sec_f= "{0:N2}" -f $sec
write-host $outtext -nonewline
write-host ' |' $sec_f '| '
# Время загрузки для всего проекта
$prj_sec += $sec
}
$gen_sec += $prj_sec
$prj_sec = "{0:N2}" -f $prj_sec
#$prj_sec = new-timespan -seconds $prj_sec
write-host
write-host 'Время загрузки: ' -nonewline
write-host $prj_sec -nonewline -foregroundcolor Red
write-host ' сек.'
}
$gen_min = "{0:N2}" -f (new-timespan -seconds $gen_sec).totalminutes
write-host
write-host 'Общее время загрузки: ' -nonewline
write-host $gen_min -nonewline -foregroundcolor Red
write-host ' мин.'