Несколько полезных функций на PowerShell
7 Сентябрь 2009
Первая функция получает необходимые свойства объекта из Active Directory
#########################################################################################
# Created: Zakharchenko Andrey Ruslanovich
# Date: 2009.09.07
# Description: Функция получения свойства объект[а|ов] из Active Directory
#########################################################################################
Function Get-ADProperty {
param ($name, $type, $property, $domain)
#--- если не задан домен, то получаем его самостоятельно
if (!$domain) {
$domain = ([adsi]"").DistinguishedName
}
#--- собственно сам фильтр
$strFilter = "(&(objectCategory=$type)(cn=$name))"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$domain")
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
#--- обозначаем корень поиска
$objSearcher.SearchRoot = $objDomain
#--- чтоб случайно не задосить Active Directory
$objSearcher.PageSize = 1000
#--- применяем фильтр
$objSearcher.Filter = $strFilter
#--- ищем
$colResults = $objSearcher.FindAll()
#--- выводим результат
Foreach ($objResult in $colResults) {
$objResult.Properties.$($property.tolower())
}
# Created: Zakharchenko Andrey Ruslanovich
# Date: 2009.09.07
# Description: Функция получения свойства объект[а|ов] из Active Directory
#########################################################################################
Function Get-ADProperty {
param ($name, $type, $property, $domain)
#--- если не задан домен, то получаем его самостоятельно
if (!$domain) {
$domain = ([adsi]"").DistinguishedName
}
#--- собственно сам фильтр
$strFilter = "(&(objectCategory=$type)(cn=$name))"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$domain")
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
#--- обозначаем корень поиска
$objSearcher.SearchRoot = $objDomain
#--- чтоб случайно не задосить Active Directory
$objSearcher.PageSize = 1000
#--- применяем фильтр
$objSearcher.Filter = $strFilter
#--- ищем
$colResults = $objSearcher.FindAll()
#--- выводим результат
Foreach ($objResult in $colResults) {
$objResult.Properties.$($property.tolower())
}
Пример запуска и получаемого результата:
[PS] <25> C:\Bin>Get-ADProperty -type "user" -name "Захарченко Андрей" -property "homeDirectory"
\\balance.isea.ru\homes$\abigor
[PS] <26> C:\Bin>Get-ADProperty -type "group" -name "пользовате*" -property "DistinguishedName" -domain "DC=student,DC=isea,DC=ru"
CN=Пользователи,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи DCOM,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи домена,CN=Users,DC=student,DC=isea,DC=ru
CN=Пользователи журналов производительности,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи системного монитора,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи удаленного рабочего стола,CN=Builtin,DC=student,DC=isea,DC=ru
[PS] <27> C:\Bin>
\\balance.isea.ru\homes$\abigor
[PS] <26> C:\Bin>Get-ADProperty -type "group" -name "пользовате*" -property "DistinguishedName" -domain "DC=student,DC=isea,DC=ru"
CN=Пользователи,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи DCOM,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи домена,CN=Users,DC=student,DC=isea,DC=ru
CN=Пользователи журналов производительности,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи системного монитора,CN=Builtin,DC=student,DC=isea,DC=ru
CN=Пользователи удаленного рабочего стола,CN=Builtin,DC=student,DC=isea,DC=ru
[PS] <27> C:\Bin>
Следующая функция получает название текущего домена в формате domain.com
Function Get-Domain {
(Get-WmiObject -ComputerName '.' -Query 'Select domain From Win32_ComputerSystem').Domain
}
(Get-WmiObject -ComputerName '.' -Query 'Select domain From Win32_ComputerSystem').Domain
}

.gif)
