суббота, 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

2012R2. AD. Выгрузка групп в csv.

Этот скрипт

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

import-module ActiveDirectory
$ADParams=@{
'Server' = 'XXX'
'Searchbase' = 'OU=XXX,DC=XXXX,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 = "\\XXXX\ea_docs\it\ИТ\Reports\AD\" + [string]$CurrentDate.Year +"."+ [string]$newmonth +"."+ [string]$newday
if (!(Test-Path $reportfolder)) { New-Item -Path $reportfolder -ItemType "directory" }
$reportfilename = $reportfolder + "\groups.csv"

# get list of groups names
$SelectParams=@{
'Property'= 'Name','GroupCategory','GroupScope', 'Description','mail'
}
Get-ADGroup @ADParams | select-object @SelectParams | sort  name |export-csv $reportfilename -Encoding utf8

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

пятница, 16 января 2015 г.

2012R2. AD. Выгрузка свойств пользователей включая членство в группах в csv

Этот скрипт

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

Создаем файл get-users-info.ps1
# Задайте контейнер для анализа
import-module ActiveDirectory
$ADUserParams=@{
'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  + "\users.csv"

$SelectParams=@{
'Property' = 'SAMAccountname', 'CN', 'title', 'DisplayName', 'Description', 'EmailAddress', 'mobilephone',@{name='businesscategory';expression={$_.businesscategory -join '; '}}, 'office', 'officephone', 'state', 'streetaddress', 'city', 'employeeID', 'Employeenumber', 'enabled', 'lockedout', 'lastlogondate', 'badpwdcount', 'passwordlastset', 'created', @{Name='MemberofGroup'; e={ ($_.MemberOf | Get-AdGroup | sort name | foreach {$_.name}) -join ';'}}
}

get-aduser @ADUserParams | select-object @SelectParams  | export-csv $reportfilename -Encoding utf8

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