пятница, 31 мая 2013 г.

Как добавить PowerShell-модуль ActiveDirectory в Windows 7?

1. Установите Remote Server Administration Tools (RSAT) для Windows 7 (ссылка).
2. Далее, открыть Панель управления > Все элементы панели управления > Программы и компоненты.
Открыть меню справа "Включение и отключение компонентов Windows".
Пройти по дереву Средства удалённого администрирования сервера > Средства администрирования ролей > Средства доменных служб Active Directory и служб облегчённого доступа к каталогам
Включить компонент "Модуль Active Directory для Windows".



3. Всё готово.

Модуль можно запускать через командную строку PowerShell:
>> Import-Module ActiveDirectory

Для проверки корректной работы модуля запустите команду:
>> get-module -ListAvailable


Краткий список решений для частоиспользуемых сценариев работы с модулем ActiveDirectory:
  • Информация о домене:
  • >> Get-ADDomain
  • Информация о контроллере доменов:
  • >> Get-ADDomainController
  • Список администраторов:
  • >> $group = Get-AdGroup Administrators
    >> Get-ADUser -Filter {MemberOf -recursivematch $group.DistinguishedName}
  • Поиск компьютера в домене по вхождению фразы в название компьютера ("pc"):
  • >> Get-ADComputer -LDAPFilter "(name=*pc*)"
  • Более подробная информация о компьютере  чем в предыдущем командлете:
  • >> Get-ADComputer -LDAPFilter "(name=*097*)" -properties *



среда, 29 мая 2013 г.

Установка PowerShell 3.0 ISE на Windows 7

Скачать и установить Windows Management Framework 3.0.
Примечание: если не установлен, потребуется установить .Net Framework версии не ниже 4.0 (ссылка).

После этого в Пуске набрать "powershell" и запустить.

Если при запуске PowerShell-скрипта выдаётся сообщение о невозможности запуска сценария, тогда нужно поменять политику исходя из ваших предпочтений (см. about_Execution_Policies). 

Например:
>> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

для Windows 10
>> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser



понедельник, 27 мая 2013 г.

WordPress: Локализация и перевод тем и плагинов

Для перевода английских тем или плагинов я использую плагин "CodeStyling Localization" (ссылка). С помощью него без проблем можно сделать перевод темы или плагина.

См. описание: http://www.code-styling.de/english/development/wordpress-plugin-codestyling-localization-en



четверг, 11 апреля 2013 г.

Мониторинг действий пользователей в TFS

В TFS 2012 появилась функциональность по мониторингу действий пользователей. Чтобы просмотреть эти данные, необходимо открыть Url http://ИмяСервераTFS:8080/tfs/_oi


Мониторинг пользователей

Мониторинг заданий


Раньше для мониторинга пользователей требовалось просматривать таблицу tbl_Command.


среда, 6 марта 2013 г.

Необходимые знания и навыки для сдачи экзамена MS 70-462

Аналогичный предыдущему слайд скиллов для сдачи экзамена 70-462 Administering Microsoft SQL Server 2012 Databases.



Необходимые знания и навыки для сдачи экзамена MS 70-496

Составил и отобразил в наглядной форме все скиллы, необходимые для сдачи экзамена 70-496 Administering Visual Studio Team Foundation Server 2012. Делал для себя, для сдачи экзамена, но возможно кому-то ещё пригодится.




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

T-SQL Информация о резервных копиях для баз

Информация по резервированию для указанной базы за последние n-дней

-- Имя базы данных
DECLARE @database_name char(100) ='NameDatabase'

-- Сколько дней от текущей даты нужно анализировать
DECLARE @day int = 1

SELECT  
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
   msdb.dbo.backupset.database_name as 'Database name',  
   CASE msdb..backupset.type  
       WHEN 'D' THEN 'Database'  
       WHEN 'L' THEN 'Log'  
   END AS backup_type,  
   msdb.dbo.backupset.backup_size,  
   convert(varchar, dateadd(s, datediff (s, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date), convert(datetime2, '0001-01-01')), 108) as backup_duration,  
   msdb.dbo.backupset.backup_start_date AS Start_backup,  
   msdb.dbo.backupset.backup_finish_date AS Finish_backup, 
   msdb.dbo.backupmediafamily.physical_device_name, 
   msdb.dbo.backupmediafamily.logical_device_name,       
   msdb.dbo.backupset.name AS backupset_name, 
   msdb.dbo.backupset.description,
   msdb.dbo.backupset.expiration_date AS Expiration_backup
FROM   msdb.dbo.backupmediafamily  
   INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE  (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - @day) and msdb.dbo.backupset.database_name = @database_name
ORDER BY  
   msdb.dbo.backupset.database_name, 
   msdb.dbo.backupset.backup_finish_date desc


Информация о последней сделанной резервной копии для всех баз данных на SQL-сервере



SELECT  
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
   msdb.dbo.backupset.database_name,  
   MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date 
FROM   msdb.dbo.backupmediafamily  
   INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
 INNER JOIN sys.sysdatabases ON sys.sysdatabases.name = msdb.dbo.backupset.database_name
WHERE  msdb..backupset.type = 'D' 
GROUP BY 
   msdb.dbo.backupset.database_name  
ORDER BY  
   last_db_backup_date 



Список баз данных с количеством часов, которое прошло с последней сделанной резервной копии (базы, которые резервировались за последние 24 часа, в список не попадают)


SELECT 
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
   msdb.dbo.backupset.database_name, 
   MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date, 
   DATEDIFF(hh, MAX(msdb.dbo.backupset.backup_finish_date), GETDATE()) AS [Backup Age (Hours)] 
FROM  master.dbo.sysdatabases AS M LEFT JOIN msdb.dbo.backupset ON M.Name =  msdb.dbo.backupset.database_name
WHERE     msdb.dbo.backupset.type = 'D'  
GROUP BY msdb.dbo.backupset.database_name 
HAVING      (MAX(msdb.dbo.backupset.backup_finish_date) < DATEADD(hh, - 24, GETDATE()))  

UNION  

SELECT      
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,  
   M.NAME AS database_name,  
   NULL AS [Last Data Backup Date],  
   9999 AS [Backup Age (Hours)]  
FROM 
   master.dbo.sysdatabases AS M LEFT JOIN msdb.dbo.backupset 
       ON M.name  = msdb.dbo.backupset.database_name 
WHERE msdb.dbo.backupset.database_name IS NULL AND M.name <> 'tempdb' 
ORDER BY  
   msdb.dbo.backupset.database_name


Источник: http://www.mssqltips.com/sqlservertip/1601/script-to-retrieve-sql-server-database-backup-history-and-no-backups/

четверг, 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)