Для создания телефонного справочника на портале SharePoint 2010 Foundation нужен XML-файл со всеми контактами, т.е. с именами, телефонами, отделами и т.д. Весь процесс создания телефонного справочника подробно описал Илья Сазонов. За основу я взял его скрипт и подогнал под свою задачу.
В домене около 1500 учетных записей, а скрипт выдавал только 1000. Решением было добавить свойство PageSize, подробнее про него на сайте TechNet.
В домене около 1500 учетных записей, а скрипт выдавал только 1000. Решением было добавить свойство PageSize, подробнее про него на сайте TechNet.
# # Поиск учетный записей в AD с помощью PowerShell и вывод результата в XML файл # # Searching Active Directory with Windows PowerShell - http://technet.microsoft.com/en-us/library/ff730967.aspx # Windows PowerShell Tip of the Week - http://technet.microsoft.com/en-us/library/ff730959.aspx # Описание параметров DirectorySearcher - http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher_properties.aspx # # 23.11.2011 $objSearcher = New-Object System.DirectoryServices.DirectorySearcher # поиск будет по всему поддереву(по вложенным OU), "Base"-только по OU, "OneLevel"-поиск на один уровень ниже $objSearcher .SearchScope = "Subtree" # если в OU пользователей больше 1000, то нужно задать следующий параметр PageSize = 1000 $objSearcher .PageSize = 1000 $objSearcher .Filter = "(&(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2)(title=*))" # Filters: (objectCategory=person)-поиск только учетных записей пользователей, (objectClass=user)-только УЗ, без контактов # (!userAccountControl:1.2.840.113556.1.4.803:=2)-учетный записи, которые disable, а восклицательный знак исключает их, # (title=*)-УЗ с заполненной графой «Должность»(title) $users = $objSearcher .FindAll() $template = @" <domainusers> "@ $users | ForEach-Object { $_ = $_.GetDirectoryEntry() $template += @" <user> <ФИО> $($_.cn.ToString())</ФИО> <Отдел> $($_.department.ToString())</Отдел> <Должность> $($_.description.ToString())</Должность> <Комната> $($_.physicalDeliveryOfficeName.ToString())</Комната> <Телефон> $($_.telephonenumber.ToString())</Телефон> </user> "@ } $template += @" </domainusers> "@ # $template # вывести все учетные записи на экран $xmlusers = New-Object xml $xmlusers .LoadXML( $template ) $xmlusers .Save( "d:\xml\xmlusers_all.xml" ) |
#
# Поиск учетный записей в AD с помощью PowerShell и вывод результата в XML файл
#
# Searching Active Directory with Windows PowerShell -
http://technet.microsoft.com/en-us/library/ff730967.aspx
# Описание параметров DirectorySearcher - http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher_properties.aspx
#
# 23.11.2011
$objSearcher
= New-Object
System.DirectoryServices.DirectorySearcher
# поиск будет по всему поддереву(по вложенным OU), "Base"-только по OU, "OneLevel"-поиск на один уровень ниже
$objSearcher
.SearchScope = "Subtree"
# если в OU пользователей больше 1000, то нужно задать следующий параметр PageSize = 1000
$objSearcher
.PageSize = 1000 $objSearcher
.Filter = "(&(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2)(title=*))"
# Filters: (objectCategory=person)-поиск только учетных записей пользователей, (objectClass=user)-только УЗ, без контактов
# (!userAccountControl:1.2.840.113556.1.4.803:=2)-учетный записи, которые disable, а восклицательный знак исключает их,
# (title=*)-УЗ с заполненной графой «Должность»(title)
$users
= $objSearcher
.FindAll()
$template
= @"
<domainusers>
"@
$users
| ForEach-Object {
$_ = $_.GetDirectoryEntry()
$template
+= @"
<user>
<ФИО> $($_.cn.ToString())</ФИО>
<Отдел> $($_.department.ToString())</Отдел>
<Должность> $($_.description.ToString())</Должность>
<Комната> $($_.physicalDeliveryOfficeName.ToString())</Комната>
<Телефон> $($_.telephonenumber.ToString())</Телефон>
</user>
"@
}
$template
+= @"
</domainusers>
"@
# $template #
вывести
все
учетные
записи
на
экран
$xmlusers
= New-Object xml $xmlusers
.LoadXML($template
) $xmlusers
.Save("d:\xml\xmlusers_all.xml"
)
Комментариев нет:
Отправить комментарий