Ниже представлен небольшой скрипт для вывода основных полей из User Profile Service Application. Помимо тривиального перебора свойств Microsoft.Office.Server.UserProfiles.UserProfileManager, стоит отметить наличие столбца, в котором указано привязанное поле в Active Directory и направление синхронизации. Так же есть небольшая особенность вывода значений в файл.
Имя соединения можно посмотреть в настройках UPSA, там может быть несколько соединений.
Обратите внимание на кусочек вывода в файл. Необходимо указывать "Out-String" чтобы строки не обрезались.
# Почистить вывод cls # Получить оснастку Add-PSSnapin "Microsoft.SharePoint.PowerShell" # Указываем имя подключения (имя можно посмотреть по адресу:http://CA:port/_layouts/15/mgrdsserver.aspx?ApplicationID={GUID}) $connectionName = "MyConnectionName" # Адрес коллекции $siteUrl = "http://server:port" # Получаем коллекцию $site = Get-SPSite $mySiteUrl # Получаем SPServiceContext $context = Get-SPServiceContext $site # Получаем все необходимые объекты $profileConfigManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($context) $syncConnection = $profileConfigManager.ConnectionManager[$connectionName] $profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context) $propertyList = New-Object System.Collections.Generic.List[System.Object] # Формируем список foreach ($p in $profileManager.properties) { $propertyObject = New-Object PSObject # Системное имя $propertyObject | Add-Member Name $p.Name # Отображаемое имя $propertyObject | Add-Member DisplayName $p.DisplayName # Переводы на интересующие языки (Ru) $propertyObject | Add-Member LocalRU $p.DisplayNameLocalized[1049] # Переводы на интересующие языки (En) $propertyObject | Add-Member LocalEN $p.DisplayNameLocalized[1033] # Тип $propertyObject | Add-Member Type $p.Type # Размер поля $propertyObject | Add-Member Length $p.Length # Синхронизируемое поле в АД $pm = $syncConnection.PropertyMapping[$p.Name] $propertyObject | Add-Member PropertyNameAD $pm.DataSourcePropertyName # Направление синхронизации $propertyObject | Add-Member IsImportFromAD $pm.IsImport # Обязательность $propertyObject | Add-Member IsRequired $p.IsRequired # Параметр конфиденциальности $propertyObject | Add-Member DefaultPrivacy $p.DefaultPrivacy # Возможность переопределения конфиденциальности $propertyObject | Add-Member UserOverridePrivacy $p.UserOverridePrivacy # Возможность изменения пользователем $propertyObject | Add-Member IsUserEditable $p.IsUserEditable # Отображение на странице просмотра $propertyObject | Add-Member IsVisibleOnViewer $p.IsVisibleOnViewer # Отображение на форме изменения $propertyObject | Add-Member IsVisibleOnEditor $p.IsVisibleOnEditor # Индексация (в смысле доступен для поиска) $propertyObject | Add-Member IsSearchable $p.IsSearchable # Добавить в список $propertyList.Add($propertyObject) } # Выводим список на экран в отдельном окне в сетке $propertyList | Out-GridView # Выводим список в текстовый файл с заголовками $propertyList | Format-Table -Property * -AutoSize ` | Out-String -Width 4096 ` | Out-File C:\FileName.txt
Имя соединения можно посмотреть в настройках UPSA, там может быть несколько соединений.
Обратите внимание на кусочек вывода в файл. Необходимо указывать "Out-String" чтобы строки не обрезались.