Автоматизація роботи з Windows Scripting Host. Облік комп'ютерів за допомогою CheckCfg

Зіткнувся і нічого розумного в інеті не знайшов. Усі якісь уривки та шматки. Батник (просто BAT) у нас є, але якось на сервері 2008 вже несерйозно))). Вирішив написати його сам. Вийшло.
Ну і тепер вирішив описати так, щоб будь-якому було зрозуміло, хто хоч трохи бачив PowerShell і знайомий зі скриптами.

Отже. Щоб створити купу користувачів з купою параметрів Active Directory потрібно (крім Windows Server 2008 R2 SP1 \ PowerShell 2.0.1.1):

0. Дозволити виконувати скрипти в powershell - відкрити powershell на контролері домену та виконати команд
Set-ExecutionPolicy Unrestricted

Не виконавши цієї команди, отримаємо повідомлення "виконання скриптів заборонено для даної системи"

1. Завантажити в powershell модуль управління Active Directory. Виконуємо команду
import-module activedirectory

2. Створюємо в MS Excel файл з параметрами користувачів. У верхньому рядкувказано пояснення, що це за параметр. У другому рядку вказано ім'я параметра – це реальна команда-параметр для командлета new-aduser. Далі в кожному стовпці вказано значення будь-якого параметра, який буде надано об'єкту при створенні. У принципі, всі ці параметри можна подивитися за командою get-help new-aduser -full. Я вибрав потрібні мені і поставив їх значення:


Кому не видно - ось перелік стовпців через кому, які обов'язкові.
Name,Password,Surname,GivenName,DisplayN ame,Description,Department,Title,Divisio n,City,EmailAddress,ScriptPath,SamAccoun tName

Взагалі можна заповнити всі параметри обліку, імена параметрів можна побачити у властивостях обліку, на вкладці Редактор атрибутів (якщо такої вкладки немає - включаємо додаткові можливості у властивостях консолі ММС)

При створенні параметрів потрібно уникати точок, ком та іншого сміття, яке може бути сприйнято як команда. Обов'язковим параметромслід зробити SamAccountName (дякую коментуючому за поправку)
Зберігаємо файлик з розширенням XLS(XLSX – для 2007). А потім зберігаємо з розширенням CSV(розділювачі – крапка з комою). Відкриваємо файл з розширенням CSV в блокноті і зберігаємо в іншому кодуванні - Unicode (а за замовчуванням йде ANSI, яку powershell не перетравлює і при виконанні видасть помилку). Ім'я збереженого і шлях (для спрощення розуміння наступних кроків) - C:scriptscreateuserbat.csv. Відкриваємо файлик в якомусь файловому менеджері і замінюємо ВСІ точки з комою (;) на просто коми - (,). Зберігаємо. Не повинно бути зайвих прогалин, точок та іншого мотлоху. Перевіряти потрібно ретельно.

3. Відкриваємо блокнот і вставляємо туди ось цей код:
Import-CSV -Path "C:\scripts\createuserbat.csv" | ForEach-Object -процес (New-ADuser -Name $_.Name -Surname $_.Surname -City $_.City -Department $_.Department -GivenName $_.GivenName -Title $_. Title -Description$_.Description -DisplayName $_.DisplayName -Division $_.Division -EmailAddress $_.EmailAddress -MobilePhone $_.MobilePhone-SamAccountName $_.SamAccountName -ScriptPath $_.ScriptPath -Path "ou=Users_Test,dc=Test,dc=ru" -CannotChangePassword $true -ChangePasswordAtLogon $false -PasswordNotRequired $true -AccountPassword (ConvertTo-SecureString -AsPage TEST)

Тепер докладніше. Розберемо скрипт на шматки:
Import-CSV -Path "C:\scripts\createuserbat.csv"- ця команда бере дані з файлика, який ми створили (і поклали по зазначеним шляхом- у даному випадкув C:\scripts\createuserbat.csv) і передає їх...
| ForEach-Object -process - ... в конвеєр вказаної далі команди (тобто вказана далі команда відпрацює для всіх рядків нашого createuserbat.csv)
(New-ADuser - команда вже знайома і зрозуміла - вона створює користувача з потрібними атрибутами, які перераховуються далі...
-Name $_.Name - це атрибут Ім'я (по суті логін користувача). Тобто. ми говоримо команді New-ADUser взяти параметр Name з файлика createuserbat.csv зі стовпця Name (вказується псевдонім $_.Name).
Далі – все за аналогією. Обов'язковим параметром слід зробити SamAccountName

Нюанси – куди створюється об'єкт, його пароль та атрибути, пов'язані з паролем. А також скрипт, який виконується при вході в систему.

Куди створюється об'єкт (користувач)?
Це вказується параметром -Path "ou=Users_Test,dc=Test,dc=ua"з якого ми бачимо, що створюватиметься він у контейнері (OU) Users_Test домену Test.ru. Тут треба підставити своє значення звісно. Я б радив тримати користувачів не в Users, як це буває за замовчуванням, а в іншому OU. Це спростить потім роботи із політиками. Подивитися шлях до контейнера можна в консолі MMC Користувачі та комп'ютери включеними додатковими параметрами. Дивимося в редактор атрибутів, параметр distinguishedName.

Пароль та його атрибути.
-CannotChangePassword $true - задаємо параметр "Заборонити зміну пароля користувачем"

ChangePasswordAtLogon $false -задаємо параметр "Змінити пароль при наступному вході в систему" у значення НІ

PasswordNotRequired $true - задаємо параметр "Чи потрібно пароль для облікового запису" значення ТАК

AccountPassword (ConvertTo-SecureString -AsPlainText $_.Password -Force)- задаємо власне сам пароль, включаючи можливість це робити з простого текстового значення, знімаючи атрибути секретності, і передаючи в конвеєр значення стовпця Password у файлі createuserbat.csv

Скрипт, який виконується при вході в систему.
-ScriptPath $_.ScriptPath
У цьому параметрі прописано startuser.bat. Це звичайний батник, яким дуже зручно підключати мережеві диски, запускати якісь повідомлення на js, та інші. Лежати повинен у \\DomainController\NETLOGON.

Зберігаємо файл з розширенням PS1 у кодуванні Unicode з ім'ям CreateUser.PS1 у той же каталог, куди і createuserbat.csv

4. Запускаємо файл CreateUser.PS1

5. Облікові записи готові, якщо їх не видно в AD - оновіть сторінку консолі))) Однак усі вони вимкнені. Виділяємо їх усі і включаємо однією командою з правою кнопкоюмиші. В принципі є параметр -Enabled, використаного нами командлета New-ADUser, і її можна додати в кінець списку параметрів, але мені здається зручніше включати облікові записи, коли користувач прийде до адміністратора (тобто до мене) за листочком з обліковими даними.

Є й інші варіанти створення користувача – за допомогою questsoft тощо, але якщо у вас Windows Server 2008 R2 SP1\PowerShell 2.0.1.1 – це працює, перевірено.

UPDATE 1
Завжди замінюйте роздільники - крапки з комою (;) на коми(,)
UPDATE 2
Завжди перевіряйте кількість символів у паролі - одне повинно відповідати кількості символів у паролі, вказаному в Default Domain Policy
UPDATE 3
Обов'язковим параметром слід зробити SamAccountName. Зробіть його рівним параметру Name (тобто логіну)
UPDATE 4
Крім полів "опис" всі інші поля рекомендується заповнювати латинськими літерами, без пробілів, наприклад buhgalteria_permskogo_otdelenia_banka
UPDATE 5
Для виконання дуже зручно використовувати не стандартний рядок powershell, а якийсь giud, вбудований в ОС і що дозволяє зручніше правити скрипти, здувати сторінки тощо. Запускається просто: виконати \ вводимо команду

В самому простому варіантістворення нового облікового запису користувача займає приблизно кілька хвилин. Відкриваємо оснащення Active Directory – Users and Computers, заходимо в потрібний підрозділ (OU), в меню вибираємо Створити - Користувач, вводимо ім'я користувача та пароль. Все, облік готовий, можна працювати.
А тепер уявіть, що таким чином вам треба створити не один, а скажемо 50 облікових записів, і робити це регулярно.

Оскільки навряд чи комусь подобається проводити час, тупо набираючи облікові дані користувачів, то робимо простий висновок – процес закладу користувачів треба автоматизувати. І допоможе нам у цьому PowerShell.

Отже, припустимо, що нам потрібно терміново створити 50 однотипних облікових записів. Пишемо ось такий скрипт:


$username=″student″
$count=1..50
foreach ($i in $count)
( New-AdUser -Name $username$i -Path $org -passThru )

Запускаємо скрипт і в підрозділі Students створюється 50 користувачів з іменами student1-student50. За замовчуванням обліки створюються відключеними, і користувачі все одно будуть змушені звертатися до вас для їх активації. Спробуємо цього уникнути:


$username=″student″
$count=1..50
foreach ($i in $count)

-AccountPassword (ConvertTo-SecureString "p@$$w0rd" -AsPlainText -force) -passThru )

Тут створюємо облікові записи вже активними та задаємо p@$$w0rdяк пароль за промовчанням, а також вказуємо змінити його при першому вході до системи. Щоб не передавати пароль у відкритому вигляді, використовуємо командлет ConvertTo-SecureString, який переводить текстовий рядок у захищений формат

Тепер зробимо наш скрипт трохи гнучкішим. Використовуючи командлет Read-Hostзмусимо наш скрипт запитувати ім'я та кількість користувачів:

$org=″OU=Students,DC=contoso,DC=com″


$count=1..$number
foreach ($i in $count)
( New-AdUser -Name $username$i -Path $org

Облікові записи створені, користувачі можуть входити до системи та працювати. Тепер їх треба налаштувати – додати до груп безпеки, прописати домашній каталог, сценарії входу тощо. Зробити це можна за допомогою шаблону. Простіше кажучи, створюємо шаблонний обліковий запис, повністю налаштовуємо його, а потім робимо з нього потрібну кількість копій за допомогою параметра -Instance :

$template = Get-AdUser -Identity 'student'
$org=″OU=Students,DC=contoso,DC=com″
$username=Read-Host Enter name
$number=Read-Host ″Enter number″

$count=1..$number
foreach ($i in $count)
( New-AdUser -Name $username$i -UserPrincipalName $username$i -Path $org -Instance `
$template -Enabled $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString "p@$$w0rd" -AsPlainText -force) -passThru )

Ще один спосіб автоматизувати створення облікових записів - імпортувати їх із CSV-файлу. Цей спосіб підійде в тому випадку, якщо вам надали список користувачів, і їм потрібно завести облікові записи відповідно до цього списку. Як правило, подібні спискистворюються в Excel у вигляді таблиці зі стовпцями Ім'я, Посада, Відділ тощо, приблизно такого виду:

Наше завдання – зберегти його у форматі CSV і потім вказати у скрипті за допомогою командлета Import-CSV.Якщо ваш CSV-файл містить усі необхідні стовпці, то New-ADUser автоматично зв'яже їх із правильними атрибутами користувача:

$csv = Import-CSV -Path "C:\scripts\users.csv"
$csv | New-AdUser -Path $org -Enabled $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString "p@$$w0rd" -AsPlainText -force) -passThru

Таким чином, можна імпортувати сотні нових користувачів за кілька секунд, але є в цьому методі і підводні камені:

  • Назви стовпців повинні повністюзбігатися з назвами атрибутів користувача, наприклад Name (Ім'я), Organization (Організація), Title (посада), інакше нічого не вийде. Повний список атрибутів можна переглянути.
  • В таблиці обов'язковопотрібно вказати SamAccountName, інакше буде видана помилка про те, що обліковий запис вже існує.
  • Якщо атрибути задавати в російській розкладці, як у нашому прикладі, можуть виникнути проблеми з кодуванням. У вирішенні цієї проблеми мені допомогло витягти вміст CSV-файлу за допомогою командлета Get-Contentта збереження його в інший CSV-файл: Get-Content users.csv >> users1.csv.Після цього всі російськомовні атрибути почали відображатись нормально.

І ще один важливий момент: для запуску командлету New-ADUserВи повинні попередньо імпортувати модуль Active Directory для PowerShell. Робиться це командою Import-Module ActiveDirectory,можна просто вставити цей рядок у скрипт . Виняток становить випадок, коли ви запускаєте скрипт зі спеціального оснащення. Модуль Active Directory для Windows PowerShell».

Вбудовані засоби адміністрування ОС не завжди зручні або часто не мають достатнього функціоналу, тому арсенал сисадміна з часом поповнюється корисними утилітами, надбудовами та скриптами, які спрощують повсякденні завдання. Подвійно втішно, коли знайдене рішення не лише допомагає впоратися з певною проблемою, а й поширюється на безоплатній основі.

Advanced IP Scanner

Сисадмін повинен знати все про системи, що працюють у мережі, та швидко отримувати до них доступ. З цим завданням допомагає впоратися Advanced IP Scanner, призначений для швидкого багатопоточного сканування локальної мережі. Надається AIPS абсолютно безкоштовно, без застережень. Програма дуже проста і зрозуміла у роботі. Після запуску AIPS перевіряє IP-адреси мережевих інтерфейсів хоста, на якому вона встановлена, і автоматично прописує діапазон IP параметри сканування; якщо IP міняти не потрібно, залишається запустити операцію сканування. В результаті отримаємо список усіх активних мережевих пристроїв. Для кожного буде зібрано всю можлива інформація: MAC-адреса, виробник мережної карти, мережеве ім'я, зареєстрований в системі користувач, доступні спільні ресурси та сервіси (загальні папки, HTTP, HTTPS та FTP). Практично всі опції сканування можна налаштувати, наприклад, змінити швидкість або виключити перевірку певного типумережевих ресурсів (загальні папки, HTTP, HTTPS та FTP). До будь-якого ресурсу можна підключитися одним кліком, достатньо лише відзначити його у списку. AIPS інтегрована з програмою Radmin і в процесі сканування знаходить усі машини з Radmin Server, що працює. Результат сканування можна експортувати до файлу (XML, HTML або CSV) або зберегти в "Вибраному" (підтримується drag-and-drop). Надалі, при необхідності звернення до необхідного клієнтського комп'ютера, сканувати мережу повторно не потрібно. Якщо віддалений пристрійпідтримує функцію Wake-on-LAN, його можна увімкнути та вимкнути, вибравши відповідний пункт меню.

Компанія NetWrix, що спеціалізується на розробці рішень для аудиту змін IT-інфраструктури, пропонує десять безкоштовних і дуже корисних утиліт, покликаних помітно спростити адміністрування Windows. Наприклад, NetWrix Inactive Users Tracker дозволяє вирішити одну з нагальних проблем безпеки - наявність неактивних облікових записів, якими деякий час ніхто не користується (звільнені співробітники, відрядження, переміщення по посаді, тимчасове облікування тощо). Кадровики рідко попереджають IT-відділ про зміни, і таким обліковим записом може запросто скористатися зловмисник. Утиліта періодично перевіряє всі облікові записи в доменах та повідомляє про тих, доступ до яких не здійснювався певний час. У версії Freeяк дії можна вказати лише попередження по e-mail (достатньо задати параметри SMTP), всі інші операції адмін робить вручну, хоча і попередження в нашому випадку достатньо. У платній версії доступні: автоматичне встановленнявипадкового пароля, деактивація облікового запису та переміщення в інший OU, фільтр OU для пошуку облікових записів. Окремо пропонується PowerShell-командлет get-NCInactiveUsers, що дозволяє отримувати список неактивних користувачів(перевіряється атрибут «lastLogon») та спростити написання відповідних скриптів.

WinAudit Freeware

WinAudit – безкоштовна утиліта від компанії Parmavex Services, що дозволяє зробити повний аудит системи. Не потребує встановлення, може виконуватись у режимі командного рядка. Програма має простий і локалізований інтерфейс, підтримується запуск на всіх версіях Windows, у тому числі 64-бітних. Збір даних займає приблизно хвилину (тривалість процесу може змінюватись в залежності від операційної системита конфігурації комп'ютера), результуючий звіт складається з 30 категорій (піддається налаштуванню). В результаті адмін може отримати дані про систему, встановленому ПЗ та оновлення із зазначенням версії та вендора, підключених пристроях; список відкритих мережевих портів (номер, сервіс, програма та інше) та відкритих папок; активні сесії; установки безпеки; права доступу до периферії; інформацію про облікові записи та групи; список завдань/сервісів; програми у автозапуску; записи журналів та системну статистику (uptime, використання пам'яті, дисків). Також можна задати пошук певних файлів на ім'я. Наприклад, щоб знайти музику та відео на жорстких дискахкористувача, достатньо задати відповідні розширення (avi, mp3 тощо). Результат можна відкрити як веб-сторінку, експортувати до файлу багатьох популярних форматів (txt, XML, CSV, PDF) або в базу даних (за допомогою майстра підтримуються всі популярні: MS SQL, MS Access, MySQL, Oracle та інші), відправити по e-mail та роздрукувати.


Облік комп'ютерів за допомогою CheckCfg

Проблема обліку оргтехніки та ПЗ гостро стоїть у будь-якій організації. Вирішити її можна різними способами, один із варіантів пропонує розробник Андрій Татуков CheckCfg. Це рішення періодично збирає дані про залізо, ОС та програми, включаючи тип CPU, обсяг ОЗУ, місце на дисках, стан S.M.A.R.T. та інше. При цьому CheckCfg легко впорається з кількома сотнями комп'ютерів. Результат виводиться у зручній деревоподібній формі, до локальних каталогів легко отримати доступ. Кожному ПК може надаватися інвентаризаційний номер, за необхідності легко згенерувати звіт у форматі RTF.

CheckCfg є цілим комплексом програм. За безпосереднє збирання даних про комп'ютер відповідає CheckCfg, яка запускається при старті ОС і записує результат у файл. Управління та архівація інформації здійснюється за допомогою програми обліку Sklad, яка обробляє файли, створені CheckCfg, та зберігає у свою базу даних, після чого можна формувати звіти. За допомогою програми Sklad_w можна у зручній формі переглядати поточні конфігураціїкомп'ютерів та основні дані з оргтехніки (за IP-адресами, CPU, Memory, ПЗ). Для аналізу змін у конфігурації ПК та сповіщення про це адміністратора використовується ще одна утиліта – Doberman. Можливо, налаштування здасться не зовсім тривіальним, оскільки доведеться вручну створити потрібні конфігураційні файли, але детальний описна сайті та наявні шаблони дозволяють без проблем з усім розібратися.

MailArchiva Open Source Edition

Деякі поштові сервери, на кшталт MS Exchange, мають функції архівування пошти, що дозволяють при необхідності знайти старі повідомлення, у тому числі і виявити витік конфіденційної інформаціїпід час розслідування інцидентів. В інших випадках доводиться забезпечувати ці функції самостійно. Варіантом рішення є розробка компанії MailArchiva, сумісна з більшістю сучасних поштових серверів(Lotus Domino, MS Exchange, MDaemon, Postfix, Zimbra, Sendmail, Scalix, Google Apps). Підтримується архівування з протоколів SMTP, IMAP/POP3, WebDAV та через Мilter (програма має вбудований SMTP- та Milter-сервер, IMAP/POP-клієнт). Щоб не збирати всю пошту, можна створювати будь-які правила архівації. Реалізовано три рівні доступу до збережених даних - користувач (тільки своя пошта), адміністратор (налаштування та своя пошта) та аудитор (вся пошта можна обмежити правилами). У Open Source версії MailArchiva також реалізовані функції інтуїтивного пошуку, зокрема у вкладеннях (Word, PowerPoint, Excel, OpenOffice, PDF, RTF, ZIP, tar, gz). Працює MailArchiva на Windows, Linux, FreeBSD та Mac OS X.

Performance Analysis of Logs

У разі проблем із продуктивністю системи виявити вузьке місце за допомогою штатного Windows Performance Monitor, не маючи досвіду, досить складно. Щоб розібратися, які метрики потрібно знімати і як правильно інтерпретувати результат, потрібно ретельно прошерстити документацію. Утиліта PAL (Performance Analysis of Logs, pal.codeplex.com) помітно полегшує пошук «пляшкового шийки». Після запуску вона переглядає журнали та аналізує їх за допомогою вбудованих шаблонів. В даний час є параметри для більшості популярних продуктів MS - IIS, MOSS, SQL Server, BizTalk, Exchange, Active Directory та інших. Після запуску адміністратор у майстрі PAL Wizard активує потрібні лічильники, просто вибравши шаблон зі списку запропонованих, вказує поточні налаштування сервера (кількість CPU та інші), інтервал аналізу та каталог для збереження результату. Через деякий час буде видано докладний звіт у HTML і XML, що містить опис, ім'я лічильника та показники (Min, Avg, Max та Hourly Trend). Звіт можна легко скопіювати в будь-який документ. Але розбиратися далі в зібраних параметрах доведеться однаково самостійно. Хоча якщо PAL показує, що характеристика знаходиться у зеленому секторі, не варто хвилюватися. Сам запит зберігається у скрипті PowerShell PAL.ps1, який можна зберегти для подальшого використання. Шаблони є XML-файли; взявши за приклад будь-який із них, можна створити свій варіант. Для редагування параметрів шаблону пропонується вбудований редактор PAL Editor.


Офіційно підтримується Win7, але працює на всіх ОС від MS, починаючи з WinXP (32/64). Для встановлення знадобиться PowerShell v2.0+, MS. NET Framework 3.5SP1 та MS Chart Controls for Microsoft.NET Framework 3.5.

Створюємо точку доступу з Virtual Router

Ситуація, коли комп'ютер з Wi-Fi-картою необхідно перетворити на точку доступу, сьогодні аж ніяк не рідкісна. Наприклад, потрібно швидко розгорнути WLAN або розширити зону покриття Wi-Fi. Спочатку робота бездротової карти передбачалася лише в одному з двох режимів: точка - точка, коли клієнти приєднуються один до одного, або як точка доступу. У Win7/2k8 (крім Win7 Starter Edition) з'явилася можливість віртуалізувати мережеві з'єднання (технологія Virtual Wi-Fi), що дозволяє створювати кілька Wi-Fi-модулів зі своїми налаштуваннями при використанні одного фізичного Wi-Fi-адаптера. Таким чином, комп'ютер може бути підключений до Wi-Fi і в той же час виступати в якості точки доступу (SAPoint, Software Access Point). З'єднання з таким віртуальним хот-спотом захищене за допомогою WPA2. Перетворити ПК під керуванням Win7/2k8R2 на точку доступу можна за допомогою консольної утиліти Netsh, через Центр управління мережами та спільним доступом, або скориставшись додатком Virtual Router , що володіє інтуїтивно зрозумілим GUI і дуже простими налаштуваннями. Після запуску Virtual Router потрібно лише вказати SSD та пароль для підключення, а потім активувати точку доступу. При необхідності зупинити роботу хот-споту можна натисканням однієї кнопки. Додатково у вікні відображаються поточні підключення до точки, для кожного можна вказати свій значок та змінити деякі параметри.


Управління RDC-підключеннями - RDCMan

Для віддаленого керування серверами та ПК, що працюють під керуванням Windows, призначене оснащення Remote Desktop Connection. Якщо потрібно встановлювати багато RDP-з'єднань з різними опціями, то працювати з нею стає незручно. Замість методичного збереження індивідуальних налаштувань для кожного віддаленого комп'ютера можна використовувати безкоштовний інструмент Remote Desktop Connection Manager RDCMan, що автоматизує цей процес. Після запуску слід вказати налаштування RDP-підключення, які будуть використовуватися за замовчуванням та успадковуватись усіма з'єднаннями. Тут задаємо загальні облікові дані, шлюз, установки екрану, параметри безпеки та багато іншого. Далі створюємо потрібну кількість груп систем (наприклад, за призначенням, розташуванням, версією ОС), для кожної з них можна вказати специфічні налаштування з'єднання. І останній крок – заповнення груп системами. Для додавання сервера слід ввести лише доменне ім'я, якщо будь-який параметр буде відрізнятися від налаштувань груп, його можна відразу перевизначити. При необхідності системи легко переміщаються між групами перетягуванням. Якщо систем багато, простіше створити текстовий файл, вказавши по одному імені у рядку, після чого згодувати заготовку утиліті. Тепер, щоб підключитись, достатньо вибрати потрібний сервер і в контекстному меню клацнути пункт «Connect». Можна одночасно активувати кілька з'єднань та перемикатися між ними.

Free Active Directory Tools

Керувати параметрами Active Directory за допомогою штатних інструментівне завжди просто та зручно. У деяких ситуаціях допоможе комплект утиліт Free Active Directory Tools, який розробляє компанія ManageEngine. Комплект складається з чотирнадцяти утиліт, які запускаються з однієї оболонки. Для зручності вони розбиті на шість груп: AD USer Report, SharePoint Report, User Management, Domain and DC Info, Diagnostic Tools та Session Management. Наприклад, запуск Empty Password User Report дозволить отримати список облікових записів з порожніми паролями, GetDuplicates - отримати облікові записи з однаковими атрибутами, CSVGenerator - зберегти в CSV-файл дані облікових записів Active Directory. Інші можливості: звіт про час останнього входу в систему, отримання даних з AD на основі запиту, звіти з установкам SharePoint, управління локальними обліковими записами, перегляд та редагування політик паролів домену, отримання списку контролерів домену та їх ролей, управління їх реплікацією, моніторинг їх роботи ( завантаження CPU, ОЗУ, жорстких дисків, продуктивність та інше), управління термінальними сесіямиі багато іншого.

Comodo Time Machine

Можливість відновлення системи за допомогою компонента System Restore закладена в Windows, починаючи з ХР, але його функціональність обмежена, тому для бекапу часто використовують сторонні програми. Безкоштовна утиліта Comodo Time Machine (comodo.com) дозволяє зробити відкат ОС до будь-якого попереднього стану. Причому вона працюватиме навіть у тому випадку, коли ОС зовсім перестала завантажуватись. У процесі CTM створює точки відновлення (вручну або за розкладом), до них заносяться всі змінені системні файли, реєстр та файли користувача. Це велика перевага в порівнянні з System Restore, який зберігає та відновлює лише системні файли та реєстр. Максимальний розмірмає першу копію, інші копії зберігають лише змінені файли. З метою економії вільного дискового просторуслід періодично створювати нову контрольну точкувидаляючи старі архіви. Для відновлення ОС інформація про CTM прописується в завантажувальний сектор; Щоб викликати відповідне меню, достатньо натиснути клавішу Home. Відновлювати стан ОС можна також за розкладом, наприклад, налаштувати поведінку утиліти так, щоб при кожному перезавантаженні здійснювався автоматичний відкат до «чистої» версії системи. Це буде корисно, наприклад, в інтернет-кафе, де користувачі залишають після себе багато сміття. Крім повного відновлення ОС, утиліта надає можливість отримати з архіву більше ранню версіюбудь-якого файлу. Реалізовано пошук, тому знайти потрібні дані можна без проблем.

Amanda

Завдання централізованого резервного копіюванняданих з робочих станцій і серверів, які працюють під керуванням Windows і *nix, можна вирішити за допомогою AMANDA Advanced Maryland Automatic Network Disk Archiver). Спочатку програма була створена для роботи з стрічковими накопичувачами, Але згодом розробники запропонували механізм під назвою «віртуальні стрічки» (vtapes), що дозволяє зберігати зібрані дані на жорсткі диски та CD/DVD. AMANDA є зручною надбудовою до стандартних Unix-програм dump/restore, GNU tar та деяких інших, тому її основні характеристики слід розглядати саме виходячи з можливостей цих базових утиліт. Працює за клієнт-серверною схемою. Для доступу до комп'ютерів використовуються всі доступні методиаутентифікації: Kerberos 4/5, OpenSSH, rsh, bsdtcp, bsdudp або пароль Samba. Для збору даних із Windows-систем задіюється спеціальний агент або, як варіант, Samba. Стиснення та шифрування (GPG або amcrypt) інформації можна виконувати як безпосередньо на клієнті, так і на сервері. Усі налаштування параметрів резервування виконуються виключно на сервері, у поставці є готові шаблонитому розібратися досить просто.

Core Configurator 2.0 for Server Core

Початкове налаштування сервера, який працює під керуванням Win2k8/R2 в режимі Server Core, Виробляється в консолі за допомогою команд. Щоб спростити завдання, розробники ОС додали R2 інтерактивний скрипт SCONFIG.cmd, що дозволяє налаштувати основні параметри системи. На Сodeplex доступна альтернатива - чудовий конфігуратор Core Configurator. Для його роботи знадобиться наявність компонентів NetFx2-ServerCore, NetFx2-ServerCore та PowerShell. Після запуску Start_CoreConfig.wsf отримуємо меню, в ньому знаходимо кілька пунктів, що забезпечують доступ до основних налаштувань, якими довелося б керувати з командного рядка: активація продукту, налаштування роздільної здатності екрану, годинника та часової зони, мережного інтерфейсу, встановлення дозволів для віддалених RDP-підключень , управління локальними обліковими записами, налаштування Windows Firewall, увімкнення/вимкнення WinRM, зміна імені комп'ютера, робочої групи або домену, налаштування ролі, компонентів, Hyper-V та запуск DCPROMO. Якщо встановити прапорець «Load at Windows startup», то програма завантажуватиметься разом із системою.

Exchange 2010 RBAC Manager

У Exchange 2010 з'явилася нова рольова модель доступу, що дозволяє тонко контролювати рівень привілеїв для користувачів та адміністраторів залежно від завдань, що виконуються. Єдиний мінус – вбудовані засоби управління за допомогою командлетів PowerShell не всім можуть здатися зручними та зрозумілими. Більш розвиненими можливостями має безкоштовний інструмент Exchange 2010 RBAC Manager (RBAC Editor GUI, rbac.codeplex.com), що пропонує зрозумілий графічний інтерфейсдля налаштування властивостей усіх ролей. Розібратися з його особливостями не важко навіть новачкові. Програма написана C# і використовує PowerShell. Для роботи знадобиться встановлений Exchange 2010 Management Tools.

PowerGUI

Щойно з'явившись, командна оболонка PowerShell завоювала симпатії віндових адмінів, які давно потребували інструменту, що дозволяє автоматизувати багато завдань. З першими версіями PowerShell розробники з Microsoft не змогли запропонувати більш-менш функціональний редакторТому нішу заповнили кілька сторонніх проектів. Найкращим з них на сьогодні є PowerGUI, що надає зручний графічний інтерфейс для ефективного створеннята налагодження PowerShell-скриптів. При цьому автори пропонують готові комплекти сценаріїв для вирішення багатьох завдань – їх можна використовувати у своїх розробках.

Multi-Tabbed PuTTY

Клієнт PuTTY, що вільно розповсюджується, добре відомий адмінам, яким необхідно підключатися до віддаленим хостампо протоколам SSH, Telnet або rlogin. Це дуже зручна програма, що дозволяє зберегти налаштування сесій для швидкого підключення до вибраної системи. Єдина незручність – при великій кількості підключень робочий стіл виходить завантажений безліччю відкритих вікон. Цю проблему вирішує надбудова Multi-Tabbed PuTTY, що реалізує систему вкладок.

INFO

Спочатку PuTTY розроблявся для Windows, але пізніше був портований на Unix.

Висновок

Часто немає необхідності ламати голову над вирішенням певної проблеми: швидше за все інші адміністратори з нею вже зіткнулися і запропонували свій варіант - конкретну утиліту або скрипт, за який навіть не потрібно платити.

Відділ інформаційної безпекипоставив завдання розробки найпростішої системи аудиту, яка має щодня вивантажувати статистику про облікові записи Active Directory, створені за останні 24 години, а також інформацію про те, хто створив ці облікові записи в домені.

Powershell скрипт отримання списку недавно створених користувачів Active Directory

Для отримання списку користувачів створених у Active Directory за останні 24 години, найпростіше скористатися командлетом PowerShell Get-ADUser. Виведення командлета будемо фільтрувати за атрибутом користувача whencreated, в якому зберігається дата та час створення облікового запису. У мене вийде такий простенький PowerShell скрипт:

$lastday = ((Get-Date).AddDays(-1))

$exportcsv=”c:\ps\new_ad_users_” + $filename + “.csv”
Get-ADUser -filter ((whencreated -ge $lastday)) | Export-csv -path $exportcsv

У цьому прикладі список облікових записів AD зберігається у файлі з поточною датою як ім'я. За допомогою планувальника можна налаштувати щоденний запуск даного скрипту, внаслідок чого в вказаному каталозібудуть накопичуватися файли, що містять інформацію про дату створення того чи іншого облікового запису. До звіту можна додати інші атрибути користувача з Active Directory (див. статтю про використання ).

Як дізнатися, хто створив обліковий запис Active Directory

Крім факту створення облікового запису, може бути цікава інформація про ім'я конкретного користувача, який завів в Active Directory певний обліковий запис. Цю інформацію можна отримати з журналів безпеки контролерів домену Active Directory.

При закладі нового користувача в журналі безпеки контролера домену ( тільки тогоDC, на якому створювався обліковий запис) з'являється подія з кодом EvenId 4720 (на DC повинна бути включена до політики Default Domain Controller Policy).

В описі цієї події міститься рядок A user account was created , а потім вказаний обліковий запис, з-під якого було створено нове облік користувача AD (виділено на скріншоті нижче).

Скрипт для вивантаження всіх подій створення облікових записів з журналу контролера домену за останні 24 години може виглядати так:

$time = (get-date) - (new-timespan -hour 24)
$filename = Get-Date -Format yyyy.MM.dd
$exportcsv=”c:\ps\ad_users_creators” + $filename + “.csv”
Get-WinEvent -FilterHashtable @(LogName="Security";ID=4720;StartTime=$Time)| Foreach (
$event = $_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$CreatorUser = $event.Event.EventData.Data."#text"
$NewUser = $event.Event.EventData.Data."#text"
$dc = $event.Event.System.computer
$dc + "|" + $Time + "|" + $NewUser + “|” + $CreatorUser| out-file $exportcsv -append
}
}

За аналогією зі статтею « » можна налаштувати збереження інформації про знайдені події не текстовий файл на кожному DC, а через єдину базу MySQL.

2 липня 2012 в 23:09

Як швидко «закинути» 100500 нових користувачів у Active Directory (підняту на MS Windows Server 2003) або Скрипт для додавання облікових записів користувачів до Active Directory

  • Системне програмування

Так сталося, що я вибрав професію системного адміністратора. І займаюся цим часом невдячною справою вже майже 6 років.
Одного разу, кілька років тому, переді мною постало питання, що пізніше переросло в завдання, полягає в тому, як відносно швидко завести нові облікові записи користувачів в AD під MS Windows Server 2003?

Я думаю, що всім відомий спосіб додавання користувача в домен, так би мовити, «ручками». Тобто, для додавання нових облікових записів користувачів AD доводиться робити приблизно такі речі: відкрити оснастку «Користувачі та комп'ютери» вищезгаданої ОС, відкрити відповідну OU (Organization Unite), ініціювати будь-яким з відомих способівстворення користувача, а потім у вікні створювати користувачів одного за іншим. Погодьтеся, це досить довго і нудно, особливо якщо необхідних облікових записів користувачів не 10, а скажімо - 300, 500 і більше. Особливо це стане рутинною справою тоді, коли потрібно буде заповнити не тільки поля «логін» і «пароль», але й розташовані у всіляких вкладках поля «Прізвище», «Ім'я По батькові», «Посада», «Відділ», «Організація» " і т.д. Звичайно, Ви скажете, що методи «копіпасти» і «сліпого набору» ще ніхто не скасовував, але ви спробуйте, і відчуєте на якому користувачі ви втомитеся, а якщо не втомитеся, то порахуйте потім кількість скоєних помилок при забиття даних.
Загалом, зрозумівши, що потрібно щось робити з цим і оскільки час у мене був обмежений, я звернувся до інтернет-ресурсів з метою пошуку скрипту, який мав існувати і вирішити цю проблему, як підказувало моє чуття. На жаль, я практично розчарувався у тому, що побачив. В інтернеті було повно всіляких скриптів для автоматизації різних завданьв середовищі AD, але те, що мені було потрібно - було геть-чисто. Довелося звернутися до англомовних ресурсів, на одному з яких (на жаль, сайт-посилання на момент написання статті я вже втратив, є думки де шукати, і якщо знайду, то опублікую) був якийсь скрипт-«риба» на VBS у дуже «сиром» у вигляді, що з'ясувалося при спробі його застосувати на тестової системині до чого не привела - він просто, апріорі, не працював, зважаючи на наявність у ньому безлічі недоробок і банальних помилок, як з'ясувалося мною пізніше. Довелося виправляти, дописувати код і стати, до того ж, трохи програмістом мовою VBS:)
За цим, дозвольте подати на суд шановної публіки скрипт для додавання облікових записів користувачів до AD до попередньо створених OU (1-го рівня). Якщо виникне питання чому і OU не створюються автоматично, то відповім заздалегідь, що не знайшов як це здійснити, та й контроль так жорсткіше за змінами в AD - все ж таки доводиться не в пісочниці грати, а вносити відчутні зміни в потужну і функціонуючу в реальному часу система, так звана Active Directory.

Важливе зауваження!
Заздалегідь потрібно створити файл, який містить через роздільник ";" необхідні параметри:
Логін; Пароль; Ім'я по батькові; Прізвище; Посада; відділ; Організація;
Обов'язково наявність замикаючого роздільника ";" у кожному рядку, наприклад:
sirin-bird1; пароль1; Ім'я По батькові1; Прізвище1; Посада1; Відділ1; Організація1;
sirin-bird2; пароль2; Ім'я По батькові2; Прізвище2; Посада2; Отдел2; Організація2;
sirin-bird4; пароль3; Ім'я2 По батькові3; Прізвище3; Посада3; Отдел3; Організація3;
sirin-bird3; пароль4; Ім'я По батькові4; Прізвище4; Посада4; Отдел4; Організація4;
sirin-bird5; пароль5; Ім'я2 По батькові5; Прізвище5; Посада5; Отдел5; Організація5;
… … … … … … …
Створення такого файлу можна доручити і некваліфікованому персоналу, який вміє поводитися з елементарним текстовим редактором. А потім лише перевірити правильність набору тексту та розстановки роздільників, як і вчинив Ваш покірний слуга.

Ще одне важливе зауваження!
Параметр "Організація" є OU для відповідного користувача і не створюється цим скриптом, тому щоб все спрацювало - заздалегідь створіть відповідні OU в корені домену (біля папки OU "Users"). Це пояснюється тим, що у мене в домені було кілька організацій-клієнтів зі своїми користувачами-співробітниками, звідси й такий поділ.

Отже, сам скрипт:
Set objArgs = WScript.Arguments
if objArgs.Count = 0 then
WScript.Echo «Додає користувачів до домену.»
WScript.Echo "add_to_ad.vbs [ім'я файлу]"
WScript.Echo "[ім'я файлу] - файл зі списком користувачів"
WScript.Echo " формат файлу: Логін; Пароль; Ім'я-По батькові; Прізвище; Посада; Відділ; Організація;"
WScript.Quit
end if
path = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")
Set objFile = fso.OpenTextFile(path, 1)
Do Until objFile.AtEndOfStream
str = objFile.ReadLine
for i = 1 to Len(str) step 1
strCh = Mid (str, i, 1)
if strCh = ";" then
select case Z
case 0
UserName = strRez "*** Логін
case 1
UserPassword = strRez " *** Пароль
case 2
FirstName = strRez " *** Ім'я-По батькові
case 3
LastName = strRez " *** Прізвище
case 4
Title = strRez "*** Посада
case 5
Department = strRez " *** Відділ
case 6
Company = strRez " *** Організація
"case 7
"Manager = strRez" *** Керівник
"case 8
"OfficeRoom = strRez " *** Кімната
end select
strRez = ""
strCh = ""
Z = Z + 1
else
strRez = strRez + strCh
end if
next
strRez = ""
strCh = ""
Z = 0

Set objRoot = GetObject("LDAP://RootDSE")
Set objADSystemInfo = CreateObject("ADSystemInfo")
DomainDNSName = objADSystemInfo.DomainDNSName
DomainDN = objRoot.Get("DefaultNamingContext")
ContainerDN = "ou=" & Company & "," & DomainDN

PName = UserName & "@" & DomainDNSName ""@snb.local"

"!!! ВАЖЛИВО!!!***Вказуємо заздалегідь створену OU в яку кидаються нові користувачі *******

Set objOU = GetObject("LDAP://" & ContainerDN)

"*************************** Створюємо облік користувача домену ****************** *****
Set objUser = objOU.Create("User", "cn=" + UserName)
**** Login *****
objUser.Put "sAMAccountName", UserName
objUser.SetInfo

" ****** пароль *******
Set objUser = GetObject ("LDAP://cn=" + UserName + "," + ContainerDN)
objUser.SetPassword UserPassword

******* UPN **********
objUser.Put «userPrincipalName», pName

"****** вимкнення облікового запису *******
objUser.AccountDisabled = TRUE

******** Ім'я *********
objUser.Put "givenName", FirstName

***** Прізвище *********
objUser.Put "sn", LastName

***** Виводиться ім'я ******
objUser.Put «displayName», LastName & " " & FirstName

Ініціали
objUser.Put «initials», left(FirstName,1) & "." "& left(LastName,1)

"***** Посада ******
objUser.Put «title», Title

***** Відділ ******
objUser.Put «Department», Department

Організація
objUser.Put "Company", Company

Керівник
"objUser.Put«manager», Manager

кімната
"objUser.Put "physicalDeliveryOfficeName", OfficeRoom

***** Уст. Вимагати зміну пароля при наступному вході в систему ***
objUser.Put pwdLastSet, CLng(0)

ObjUser.SetInfo

" WScript.Echo «Користувач - » + UserName + " доданий до AD"

Loop
WScript.Echo "Користувачі додані в AD"
objFile.Close

додатковий код для вставки в скрипт:

Домашній каталог
"objUser.Put "HomeDirectory", strHomeDirPath

" Поштова скринька
"objUser.Put "mailNickname", strName

ще трохи прикладів:
"ObjUser.Put "Description", "Year 2"
"objUser.Put "physicalDeliveryOfficeName", sOfficeName
"objUser.Put "ProfilePath", sScPath
"sHDrive objUser.Put "HomeDrive", "Z"
"objUser.Put "TerminalServicesProfilePath", sTermProf
"objUser.Put «TerminalServicesHomeDirectory», sTermHDir

Код із текстового редакторазберегти потрібно з розширенням.vbs
Запуск скрипта здійснюється з передачею параметрів файлу.
Наприклад: script.vbs users.txt
, де
script.vbs – сам скрипт
users.txt - файл із вхідними даними.

Виконання скрипта займає секунди з миттєвим результатом на виході.
Як видно з коду, якщо розкоментувати ще кілька рядків та внести доповнення до файлу з вхідними параметрами, то можна «на автоматі» внести ще й Керівника та Номер кімнати. Скрипт можна розвивати необмежено. Наприклад, додати можливість внесення таким чином такого поля як «Телефон».
Як текстовий редактор під Windows можу порадити вільний для використання і функціональний Notepad++.
Одна з корисних посиланьде є скрипти на VBS.