PowerShell: выгружаем телефонную книгу
Выделил сценарий для выгрузки в .csv телефонного справочника. В связи с задачей по дисклаймерам, пришлось обновить сценарий, заодно – и статью обновляю.
Реализуем выгрузку по примеру статей “Собственно выгрузка контактных координат сотрудников из AD” и “Корректируем инициалы всех сотрудников в AD средствами powershell”. Если Вы ранее не использовали командлеты ADpowershell, рекомендую предварительно прочитать статью “Установка и первый опыт ADpowershell на Windows Server 2003”.
<# .Synopsis Выгрузка телефонной книги в .csv файл. .Description Выгружаем телефонную книку в .csv файл. Используем для построения книги атрибут telephoneNumber. .Parameter searchBase OU, с которой будет осуществляться выгрузка телефонной книги в .csv .Parameter filter Фильтр для отбора учётных записей для телефонной книги .Parameter csvFile Полный путь к файлу, в который будем выгружать .Example Выгружаем всю телефонную книгу по умолчанию .\ExportPhonesBook.ps1 #> param ( [Parameter( Mandatory=$false, Position=0, ValueFromPipeline=$false, HelpMessage="OU, с которой будет осуществляться выгрузка телефонной книги в .csv" )] [string] $searchBase = 'OU=Группа Компаний ГАРО,OU=Персонал,OU=Предприятия,OU=iTg,DC=novgaro,DC=ru', [Parameter( Mandatory=$false, Position=1, ValueFromPipeline=$false, HelpMessage="Фильтр для отбора учётных записей для телефонной книги." )] [string] $filter = {name -notlike 'ПЯ*'}, [Parameter( Mandatory=$true, Position=2, ValueFromPipeline=$false, HelpMessage="Полный путь к файлу, в который будем выгружать." )] [string] $csvFile ) import-module ActiveDirectory Get-ADUser ` -Filter $filter ` -SearchBase $searchBase ` -SearchScope Subtree ` -Properties ` cn, displayName, telephoneNumber ` | select-object ` -property ` @{Name = "ФИО"; Expression = {$_.displayName;}}, ` @{Name = "Телефон"; Expression = {$_.telephoneNumber}} ` | sort-object ` -property ФИО ` | export-csv ` $csvFile ` -encoding 'UTF8' ` -force
Итак, телефонную книгу в .csv мы выгрузили для проверки и корректировки. Теперь его можно грузить в excel или ещё куда для дальнейшей обработки.
А теперь расширим выгрузку, чтобы проверить и скорректировать все атрибуты, которые потребуются в дисклаймере (подписи):
<# .Synopsis Выгрузка телефонной книги в .csv файл. .Description Выгружаем телефонную книку в .csv файл. Используем для построения книги атрибут telephoneNumber. .Parameter searchBase OU, с которой будет осуществляться выгрузка телефонной книги в .csv .Parameter filter Фильтр для отбора учётных записей для телефонной книги .Parameter csvFile Полный путь к файлу, в который будем выгружать .Example Выгружаем всю телефонную книгу по умолчанию .\ExportPhonesBook.ps1 -csvFile 'c:\temp\phoneBook.csv' #> param ( [Parameter( Mandatory=$false, Position=0, ValueFromPipeline=$false, HelpMessage="OU, с которой будет осуществляться выгрузка телефонной книги в .csv" )] [string] $searchBase = 'OU=Группа Компаний ГАРО,OU=Персонал,OU=Предприятия,OU=iTg,DC=novgaro,DC=ru', [Parameter( Mandatory=$false, Position=1, ValueFromPipeline=$false, HelpMessage="Фильтр для отбора учётных записей для телефонной книги." )] [string] $filter = {name -notlike 'ПЯ*'}, [Parameter( Mandatory=$true, Position=2, ValueFromPipeline=$false, HelpMessage="Полный путь к файлу, в который будем выгружать." )] [string] $csvFile ) import-module ActiveDirectory Get-ADUser ` -Filter $filter ` -SearchBase $searchBase ` -SearchScope Subtree ` -Properties ` cn ` ,displayName ` ,company ` ,department ` ,title ` ,manager ` ,otherTelephone ` ,mobile ` ,telephoneNumber ` ,facsimileTelephoneNumber ` ,mail ` ,wWWHomePage ` | select-object ` -property ` @{Name = "ФИО"; Expression = {$_.displayName;}} ` ,@{Name = "Организация"; Expression = {$_.company}} ` ,@{Name = "Подразделение"; Expression = {$_.department}} ` ,@{Name = "Должность"; Expression = {$_.title}} ` ,@{Name = "Руководитель"; Expression = {(Get-ADObject -Identity $_.manager -properties cn, displayName).displayName}} ` ,@{Name = "Телефон"; Expression = {$_.otherTelephone}} ` ,@{Name = "Мобильный"; Expression = {$_.mobile}} ` ,@{Name = "Внутренний"; Expression = {$_.telephoneNumber}} ` ,@{Name = "Факс"; Expression = {$_.facsimileTelephoneNumber}} ` ,@{Name = "E-mail"; Expression = {$_.mail}} ` ,@{Name = "Web-сайт"; Expression = {$_.wWWHomePage}} ` | sort-object ` -property ФИО ` | export-csv ` $csvFile ` -encoding 'UTF8' ` -useCulture ` -NoTypeInformation ` -force
Как видно, всё просто.
Отзывы » (5)
RSS комментарии
Обратная ссылка
Спасибо за примеры, очень помогло.
Рад стараться
Спасибо помогли с export-csv -useCulture и -encoding ‘UTF8′
И сам не сразу нашёл данное решение. Рад, что и Вам пригодилось.
Спасибо!А есть пример напрямую загрузки данных в БД MySQL на удаленном сервере?т.е. у меня есть serv1 — АД, и serv2 — MySQL server. Могу я скриптом напрямую выгрузить данные из AD в bd MySQL скажем Users в таблицу ofUsers ?