пятница, 27 января 2012 г.

PowerShell. Обновление шаблонов рабочих элементов во множестве проектов TFS


Пример скрипта, который обновляет во множестве проектов 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 ' мин.'

PowerShell. Просмотр всех доменных групп пользователя


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

foreach ($usr in $usrs)
{
    write-host ' '
    write-host '--[' -nonewline
    write-host $usr  -nonewline -foregroundcolor Red
    write-host ']-------- '        
    write-host 'Доменные группы: '

    # В следующей строке необходимо ввести имя домена: Domain='сюда'
    $query = "ASSOCIATORS OF {Win32_Account.Name='"+$usr+"',Domain='ИмяДомена'} WHERE ResultRole=GroupComponent ResultClass=Win32_Account"
    Get-WMIObject -Query $query | Select Name
    write-host '-------------------- '            
}

PowerShell. Пример отправки почтового сообщения

$emailFrom = "me@domen.ru"
$emailTo = "user@domen.ru"
$subject = "Пример тестового сообщения"
$body = "Тестовое сообщение, отправленное через PowerShell"
$smtpServer = "mailserver.ru"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

четверг, 22 декабря 2011 г.

План аварийного восстановления SharePoint 2010

Важно! Независимо от выбора решения аварийного восстановления, скорее всего, какая-то часть данных будет потеряна! (С) Microsoft


1. Создание ежедневных резервных копий баз данных, используемых SharePoint-сервером.
Необходимыми являются следующие базы данных:

  • SharePoint_AdminContent_[GUID]
  • SharePoint_Config
  • WSS_Content
Процесс развёртывания:
  • создаётся ферма в новом месте (желательно развёртывать с помощью скрипта) и восстанавливать резервные копии;
  • либо выполнить восстановление фермы из резервного решения MSC DPM 2010 (ссылка1, ссылка2).


  • Плюсы: самый простой способ и дешёвый в обслуживании.
  • Минусы: самый медленный вариант восстановления. Необходимо, чтобы сервера приложений были доступны и настроены.
2. Ежедневное создание виртуальных образов серверов фермы.


  • Плюсы: быстрый вариант восстановления, т.к. требуется минимальное время на настройку серверов.
  • Минусы: может требоваться много времени для ежедневного обслуживания, т.к. создание образа виртуальной машины может использовать много ресурсов и времени.
3. Развёртывание второй фермы


Процесс:
  • для баз данных настраивается асинхронное зеркальное отображение или доставка журнала, что обеспечивает обработку отката.
  •  зеркалирование базы данных можно выполнять только на один резервный (failover) сервер, доставку журналов - на несколько;
  • базы данных конфигурации SharePoint и центра админинстрирования должны дублироваться на резервном сервере (Failover);
  • обновления серверов должны применятся к обеим фермам по отдельности;
  • все настройки должны применятся к обоим фермам индивидуально;
  • рекомендуется, чтобы службы выполнялись на отдельной ферме служб, которая была доступна как для основной, так и резервной фермы. Некоторые службы не могут выполнятся межферменно, для них необходимо использовать различные стратегии обеспечения избыточности (ссылка);

Ссылки:


  • Плюсы: практически не тратиться время на восстановление, всё происходит моментально.
  • Минусы:
  • это решение более сложно в настройке и требует высокую квалификацию администратора;
  • более сложно в поддержке (синхронная установка обновлений и установок);
  • требует больших серверных ресурсов - разворачивание дублирующей фермы, дублирующего сервера баз данных.

Заключение
Необходимо использовать как минимум 2 из 3 решений для обеспечения плана аварийного восстановления. 

Первое решение является самым простым и надёжным - из баз данных всегда можно восстановить всё необходимое, но минусом является количество времени, затрачиваемое на это восстановление и настройку систем.

Второе решение позволяет не затрачивать времени на настройку систем.

Третье решение обеспечивает не только моментальное аварийное восстановление, но ещё и постоянную доступность фермы SharePoint.

Дополнительные материалы:

вторник, 20 декабря 2011 г.

Выпущен TFS Power Tools 2011 December

Ссылка - http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

Изменения коснулись Best Practices Analyzer, TFS Backups, Alert Explorer, Process Editor и др.

вторник, 13 декабря 2011 г.

Полезные SQL-запросы


1. Список всех баз с информацией о настроенной модели восстановления (простая, полная)
SELECT name,DATABASEPROPERTYEX(name,'Recovery')
FROM sysdatabases
или
SELECT name,recovery_model_desc
FROM sys.databases

среда, 23 ноября 2011 г.

Best Practices Analyzer Tool for Team Foundation Server


Для мониторинга здоровья TFS в обязательном порядке необходимо использовать "Best Practices Analyzer Tool", которая входит в состав TFS Power Tools 2011. Данный продукт после сканирования выводит все ошибки TFS-сервера с подсказкой, как исправлять.

Ссылки:
TFS Power Tools August 2011;
- Документация "Best Practices Analyzer Tool" (Eng).



вторник, 22 ноября 2011 г.

Обновление шаблонов рабочих элементов в множестве TFS-проектов

Небольшой батник для массового обновления шаблонов рабочих элементов в нескольких проектах.

Решает задачу, когда необходимо в несколько проектов загрузить те же шаблоны рабочих элементов. Скрипт выручает, когда проектов больше 5.


понедельник, 21 ноября 2011 г.

Переименование русских полей на TFS в английские

Тем, кто устанавливал русскую версию TFS, могут возникнуть проблемы, когда они создают проект на основе английского шаблона проекта. Поэтому рекомендую переименовать поля на английский вариант и использовать английский шаблон проекта.

Я написал небольшой батник, который изменить на TF-сервере названия всех полей с русского варианта на английский.


четверг, 14 июля 2011 г.

SP1 для Project 2010

Вышел пакет обновления для Project 2010 (клиента).

Ссылки: 32-bit edition, 64-bit edition
Описание пакета обновления - здесь.