четверг, 17 января 2013 г.

Настройка прогнозирования (Forecasting) в бэклоге TFS 2012

Настройка прогнозирования в бэклоге настраивается в конфиге CommonConfiguration.xml. В разделе TypeFields задаётся поле с типом "Effort".

  <TypeFields>
     ...
    <TypeField refname="Microsoft.VSTS.Scheduling.Size" type="Effort" />
    <TypeField refname="Microsoft.VSTS.Common.Discipline" type="Activity" />
    <TypeField refname="Microsoft.VSTS.Feedback.ApplicationStartInformation" type="ApplicationStartInformation" />
     ...
  </TypeFields>

Вы можете указать здесь другое поле для Forecasting.


понедельник, 14 января 2013 г.

Выгрузка конфигов (Categories, AgileProcessConfig, CommonConfiguration) с помощью PowerShell

cls
cd 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE'

# Указать путь к папке, куда будут выгружаться и откуда загружаться конфиги
$fld='C:\Temp'

# Указать Uri TFS коллекции
$srv='http://tfs:8080/tfs/CollectionName'

# Указать имена проектов (может быть один)
$projects=@('TFSProject1','TFSProject2')

if (!(Test-Path $fld)){
new-item -type directory -path $fld
}
    write-host '[0] - Выгрузка всех конфигов (Categories, AgileProcessConfig, CommonConfiguration)'
    write-host '-------------------------'
    write-host '[1] - Выгрузка Categories'
    write-host '[2] - Выгрузка AgileProcessConfig'
    write-host '[3] - Выгрузка CommonConfiguration'  
    write-host '-------------------------'
    write-host '[5] - Загрузка всех конфигов (Categories, AgileProcessConfig, CommonConfiguration)'  
    write-host '-------------------------'
    write-host '[6] - Загрузка Categories'
    write-host '[7] - Загрузка AgileProcessConfig'
    write-host '[8] - Загрузка CommonConfiguration'      
    $action = read-host "Выберите действие: "

# Выгрузка шаблонов
foreach ($p in $projects)
{
    write-host ' '
    write-host '---------- '            
    write-host 'Проект ' -nonewline
    write-host $p -nonewline -foregroundcolor Red
    write-host '... '
    write-host ' '      

    if ($action -eq '0')
    {    
        write-host 'Выгрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcategories /collection:$srv /p:$p /f:$fld"\["$p"]_categories.xml"
        write-host 'Выгрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportagileprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_AgileConfiguration.xml"
        write-host 'Выгрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcommonprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_CommonConfiguration.xml"
    }
    elseif ($action -eq '1')
    {    
        write-host 'Выгрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcategories /collection:$srv /p:$p /f:$fld"\["$p"]_categories.xml"
    }
    elseif  ($action -eq '2')
    {
        write-host 'Выгрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportagileprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_AgileConfiguration.xml"
    }
    elseif  ($action -eq '3')
    {
        write-host 'Выгрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcommonprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_CommonConfiguration.xml"
       
    }
    elseif  ($action -eq '5')
    {
        write-host 'Загрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importcategories /collection:$srv /p:$p /f:$fld"\categories.xml"
        write-host 'Загрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importagileprocessconfig /collection:$srv /p:$p /f:$fld"\AgileConfiguration.xml"                  
        write-host 'Загрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host  ': ' -nonewline
        .\witadmin importcommonprocessconfig /collection:$srv /p:$p /f:$fld"\CommonConfiguration.xml"      
    }  
   
    elseif  ($action -eq '6')
    {
        write-host 'Загрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importcategories /collection:$srv /p:$p /f:$fld"\categories.xml"
    }
    elseif  ($action -eq '7')
    {
        write-host 'Загрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importagileprocessconfig /collection:$srv /p:$p /f:$fld"\AgileConfiguration.xml"                  
    }
    elseif  ($action -eq '8')
    {
        write-host 'Загрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host  ': ' -nonewline
        .\witadmin importcommonprocessconfig /collection:$srv /p:$p /f:$fld"\CommonConfiguration.xml"
    }      
}

суббота, 12 января 2013 г.

Просмотр списка проектов в коллекции с помощью PowerShell

Cls

# Здесь указать Uri к TFS коллекции

$srv='http://tfs:8080/tfs/CollectionName' 

$Assem = ( 

    "Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" , 
    "Microsoft.TeamFoundation.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"          
    ) 

$Source = @" 

using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Server;
using Microsoft.TeamFoundation.Common;
using System.Text;


namespace LP

{ 
    public class Program  
    {
        public Program()     
        {
        }
     
        public void Get(string url) 
        { 
            TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri (url));
            ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));
            
            List<string> list = new List<string>();

            foreach (ProjectInfo projectInfo in css.ListAllProjects())

            {              
                list.Add(projectInfo.Name);                
            }

            list.Sort();

            
                foreach (string value in list)
                {
                    //Console.Write("'");                                        
                    Console.WriteLine(value);
                    //Console.Write("',");

                }                                      

        }          
    } 
} 
"@

Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp  


$LT = New-Object LP.Program

$LT.Get($srv)

четверг, 13 сентября 2012 г.

Другие полезные команды PowerShell для Active Directory


cls
Import-Module ActiveDirectory

# Просмотр всех участников определённой доменной группы
GET-ADGROUPMEMBER 'DomainGroup' | SELECT-OBJECT Name, DistinguishedName, SamAccountName

# Найти по вхождение фразы определённых пользователей и показать их данные
Get-ADUser -Filter {name -like "*Petr*"} | FT Name,DisplayName, SamAccountName, ADGroup, EmailAddress, UserPrincipalName, Department, Description -A

Как просмотреть все доменные группы пользователя используя PowerShell


# Список доменных учётных записей, для которых необходимо показать все их доменные группы
$usrs=@('Ivanov','Petrov')   

    foreach ($usr in $usrs)
    {
        write-host ' '
        write-host '--[' -nonewline
        write-host $usr  -nonewline -foregroundcolor Red
        write-host ']-------- '          
       #get-aduser $usr | FT Name, SamAccountName,UserPrincipalName,SID,ObjectGUID
        write-host 'Доменные группы: ' 
        $query = "ASSOCIATORS OF {Win32_Account.Name='"+$usr+"',Domain='DomainName'} WHERE ResultRole=GroupComponent ResultClass=Win32_Account"
        Get-WMIObject -Query $query | Select Name
        write-host '-------------------- '             
    }

среда, 5 сентября 2012 г.

TFS Administrators Toolkit

Полезный инструмент для администраторов TFS - TFS Administrators Toolkit (Ссылка).


вторник, 28 августа 2012 г.

пятница, 24 августа 2012 г.

Изменить RECOVERY MODEL для множества баз данных через скрипт

Установка простой модели ("SIMPLE") восстановления на все базы данных SQL-сервера (MS SQL Server 2008/2008R2).

EXEC sp_MSforeachdb 'if ''?'' not in (''master'', ''model'', ''msdb'', ''tempdb'') ALTER DATABASE [?] SET RECOVERY SIMPLE'


четверг, 2 августа 2012 г.

Как связать проект на Project Server с существующим сайтом на SharePoint?

Для этого необходимо зайти на Project Web App (корневой портал Project Server).
Далее, в меню слева выбрать Параметры сервера > в разделе Действующие политики выбрать Сайты проектов. На открывшейся странице необходимо выделить свой проект и в верхнем меню нажать Изменить адрес сайта. В появившемся окне настроек вы можете задать новый адрес сайта для выбранного проекта.

Картинки на рабочий стол