суббота, 17 января 2015 г.

2012R2. AD. Выгрузка информации о группах, включая членов групп в csv.

Этот скрипт создан для удобство получения из одного файла путем сортировки разрезов как по группам, так  и по пользователям .

  • создает папку с именем текущей даты по  указаному пути (с проверкой наличия таковой)
  • выгружает из указанного контейнера AD список групп
  • вытаскивает для каждой группы ее 'members'
  • экспортирует результат в csv. Колонки: имя члена группы, тип члена группы, имя группы , описание группы 


import-module ActiveDirectory
$ADParams=@{
'Server' = 'XXX'
'Searchbase' = 'OU=XXX,DC=XXX,DC=XX'
'Searchscope'= 'Subtree'
'Filter' = '*'
'Properties' = '*'
}

$CurrentDate = Get-Date
if ($CurrentDate.Day -lt 10) {
$newday = "0" + $CurrentDate.Day
}
else {
$newday = $CurrentDate.Day
}
if ($CurrentDate.Month -lt 10) {
$newmonth = "0" + $CurrentDate.Month
}
else {
$newmonth = $CurrentDate.Month
}
$reportfolder = "\\XXX\ea_docs\it\ИТ\Reports\AD\" + [string]$CurrentDate.Year +"."+ [string]$newmonth +"."+ [string]$newday
if (!(Test-Path $reportfolder)) { New-Item -Path $reportfolder -ItemType "directory" }
$reportfilename = $reportfolder + "\aaa-groups-members.csv"
$GName = ""
$GDesc = ""

$SelectParams=@{ 'Property' = 'Name','Description'}
$SelectParamsG=@{'Property' = 'Name', 'objectClass',  @{Name='GroupName'; e={($GName) -join ';'}}, @{Name='GroupDescription'; e={($GDesc) -join ';'}}}

$groups = Get-ADGroup @ADParams | select-object @SelectParams
ForEach ($group in $groups) {
$GName = $group.Name
$GDesc = $group.Description
Get-ADGroupMember $GName | select-object @SelectParamsG | export-csv $reportfilename -encoding UTF8 -append
}

Создаем в планировщике задачу на запуск bat. Расписание по вкусу.
powershell.exe -file "\\...\get-info.ps1"
В этот-же батник  цепляю остальные скрипты, формирующие отчеты по AD.
Во всех скриптах одинаковый код по созданию $reportfolder

Комментариев нет:

Отправить комментарий