
Создание учетных записей компьютеров
Как известно, для работы с Active Directory перво-наперво необходимо вводить компьютеры в домен. Сделать это можно двумя способами:
· Мышкой – самый известный способ, через «Свойства» «Моего компьютера». Легко и просто.
· Командой netdom join. Тоже несложно, и можно использовать в скриптах.
У первого способа есть существенный недостаток: учетные записи компьютеров создаются в дефолтном OU Computers. В организациях же, как правило имеются разные OU для разных типов компьютеров (сервер, десктоп, ноутбук), а так же отдельные OU для разных отделов/департаментов/и т.д., с различными групповыми политиками, действующими для разных OU. Поэтому после ввода компьютеров в домен необходимо переносить учетные записи компьютеров вручную в соответствующий OU, а затем перезагружать компьютер еще раз, чтобы на нем применились все необходимые политики. При использовании команды netdom можно указать нужное OU, но набирать все это с клавиатуры – та еще задачка, особенно – когда компьютеров много, и особенно, что часто бывают – задачку эту поручают простым эникейщикам. Где-то в какой-то букве обязательно ошибется.
Самый лучший выход из этой ситуации – создать учетные записи компьютеров заранее, в соответствующих OU. Тогда компьютер сразу после ввода в домен и перезагрузки применит все соответствующие политики.
Разумеется, учетные записи компьютеров, как и пользователей, можно создавать и вручную. Но, поскольку мы – админы, а не эникейщики – будем использовать PowerShell.
Для учетных записей, как и для компьютеров, используем CSV-файл
ComputerName;OU
Server1;Cnotoso_Computers/Servers
Server2;Cnotoso_Computers/Servers
Desktop1;Cnotoso_Computers/Desktops
Desktop2;Cnotoso_Computers/Desktops
Desktop3;Cnotoso_Computers/Desktops
Laptop1;Cnotoso_Computers/Laptops
Далее, пишем скрипт по анологии со скриптом для учетных записей пользователей, только он будет немного проще:
Import-Module ActiveDirectory
$Computers = Import-CSV $1 –Delimiter “;”
Foreach($CurrentComputer in $Computers) {
$ComputerName = $CurrentComputer.ComputerName
$OU = $CurrentComputer.OU
$OUTmp = $OU –Split “/”
$Path = “” #незабудьте проинициализировать переменную!
$OUTmp | ForEach-Object {$Path = "OU=$_," + $Path}
$Path += “DC=contoso,DC=com”
New-ADComputer –Name $ComputerName –Path $Path
}
Массовый сброс паролей
Иногда бывает необходимо массово сбросить пароли у множества пользователей.
Структура CSV-файла:
Login – логин пользователя
NewPassword – новый пароль
Import-Module ActiveDirectory
$Users = Import-CSV $1 –Delimiter “;”
Foreach($CurrentUser in $Users) {
$Login = $CurrentUser.Login
$NewPassword = $CurrentUser.NewPassword
$SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password
Set-ADAccountPassword –Identity $Login –Reset –NewPassword $SecurePwd
}
Массовое изменение параметров
Допустим, в вашей организации были приняты новые корпоративные стандарты, которые требуют, чтобы у каждого пользователя в AD были указаны, помимо всего остального: адрес электронной почты, номер мобильного телефона, название организации, должность. Из отдела кадров вам прислали табличку со следующими полями:
Имя
Фамилия
E-Mail
Телефон
Организация (у компании несколько юр.лиц)
Должность
Из нее мы создаем CSV-файл с полями:
Name
Surname
E-Mail
Phone
Organization
JobTitle
Скрипт будет следующего вида:
Import-Module ActiveDirectory
$Users = Import-CSV $1 –Delimiter “;”
Foreach($CurrentUser in $Users) {
$Name = $CurrentUser.Name
$Surname = $CurrentUser.Surname
$Email = $CurrentUser.E-Mail
$Phone = $CurrentUser.Phone
$Organization = $CurrentUser.Organization
$JobTitle = $CurrentUser.JobTitle
$Login = (Get-ADuser –Filter {GivenName –eq $Name –and Surname –eq$Surname}).SamAccountName #ищем юзера с заданным именем и фамилией и возвращаем его логин
Set-ADUser $Login –EmailAddress $Email –MobilePhone $Phone –Company $Organization –Title$JobTitle
}