Powershell – Простой тест производительности модуля ActiveDirectory


Решил переписать старый скрипт использующий ADSI и применить командлеты из модуля ActiveDirectory. Первые строки вызвали сомнение. Решил проверить скорость работы командлетов из модуля ActiveDirectory.

$a1 = measure-command {1..300 | % {$a=Get-ADUser ITestUser -Properties *;$a.Description=1; Set-ADUser -Identity $a } }

 

$a2 = measure-command {1..300 | % {

$a=[ADSI]«LDAP://CN=TestUser,OU=Users,DC=domain,DC=ru»;

#$a=$a.GetDirectoryEntry();

$a.Description=1

$a.CommitChanges();

}

}

 

 

$a1.TotalMilliseconds/$a2.TotalMilliseconds

 

Результат: 3.74110927547075

 

Разница слишком ощутимая, чтобы отказаться от ADSI и мигрировать на командлеты модуля ActiveDirectory.

Реклама

Powershell – анализ маршрутов таблицы маршрутизации


 

В статье Powershell – проверка принадлежности IP-адреса подсети я привел функцию, которая проверяет принадлежность IP-адреса  заданной подсети. Цель была сделать анализ маршрутов при роутинге. Но когда начал писать код для анализа, то понял, что эта функция не поможет, потому что нужно выполнять анализ не просто вхождения, а анализ полной таблицы в бинарном виде. К моему удивлению .Net не содержит подобные функции бинарных операций для типа [Net.IPAddress]. Поэтому пришлось делать лобовое решение: преобразовать бинарную информацию в строки из нулей и единиц и уже анализировать их – в конце-концов нам же не десятки тысяч маршрутов анализировать из таблицы магистрального роутера… хотя …

Читать далее

Powershell – убираем старые учетные записи


Периодически любому системному администратору приходится убирать мусор из Active Directory: чем больше домен, тем быстрее накапливаются учетные записи компьютеров и пользователей, которые давно не используются.

Читать далее

Powershell – проверка принадлежности IP-адреса подсети


Вот небольшая функция, которая проверяет принадлежность IP-адреса указанной подсети:

FunctionTest-Subnet {

param (

     [parameter(Mandatory=$true)]

     [Net.IPAddress]

     $ipaddress1,

 

     [parameter(Mandatory=$true)]

     [Net.IPAddress]

     $ipaddress2,

 

     [parameter()]

     [Net.IPAddress]

     $mask=«255.255.255.0»

)

 

($ipaddress1.address -band$mask.address) -eq ($ipaddress2.address -band$mask.address)

 

}

 

 

В качестве параметров используются тип Net.IPAddress из модуля [System.Net].

Powershell – поиск учетных записей с исключением


Задача: найти все учетные записи в Active Directory за исключением тех, которые находятся в определенном Organizaitional Unit (OU) и ниже.

Такая задача может возникнуть, если у вас учетные записи пользователей размещены по контейнерам соответствующим филиалам, отделам и т.п., и вам нужно исключить какой-то филиал и/или отдел из поиска. Или, например, вам нужно исключить контейнер со служебными учетными записями.

Читать далее

RU4 Exchange Server 2010 – рекомендуется для установки


Почему надо ставить RU3 я писал в статье Важное обновление для Exchange 2010 SP2.

Недавно нашлась хитрая уязвимость в компоненте WebReady и пришлось рекомендовать временные меры по защите Exchange Server 2007/2010 Microsoft Security Advisory (2737111).

Все это вместе означает, что на текущий момент актуально и очень рекомендуется ставить Update Rollup 4 for Exchange 2010 Service Pack 2, который только что появился и содержит все самые последние обновления, в том числе закрывает вышеупомянутую уязвимость.

Из нового: теперь не нужно останавливать сервисы Forefront при установке обновления RU4 и всех последующих!

Кстати есть еще одно полезное добавление: теперь работают Retention Policies на папках Календарей и папках Задач! Подробности

Powershell – автоматизируем построение организационной структуры в Active Directory


Когда организация насчитывает сотни и тысячи сотрудников, сведения об организационной структуре становятся очень востребованными, потому что невозможно знать всех сотрудников или даже все подразделения и кто чем занимается.

Active Directory может нам облегчить жизнь: в ней можно хранить сведения об организационной структуре и подчиненности сотрудников. Подчиненность отражается в учетных записях с помощью атрибута Manager (Руководитель). Также полезно указывать значения атрибутов Title (Должность) и Department (Подразделение).

Читать далее