Создание пользователя в AD

Задача — добавить из Excel списка пользователей в AD (Active Directory) контакты или пользователей.

Решение 1 вариант:

Добавляем из CSV Файла при помощи dsadd


' раскоментировать если будут ошибки,
'On Error Resume Next
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://OU=test," &  objRootDSE.Get("defaultNamingContext"))
Set fs = CreateObject("Scripting.FileSystemObject")
' файл был переведен из Execl в csv c полями  No;User;Пользователь;ln;fn;on;Подразделение;Должность;Комната;Телефон;
Set ImportFile = fs.OpenTextFile("test_import.csv",1)
userCount = 0
while ImportFile.AtEndOfStream <> VBTrue
userRecord = ImportFile.Readline
' разделить в файле
sRecord = Split(userRecord,";")
Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")
wsh.Run("dsadd contact ""cn="+ sRecord(2)+",ou=test,dc=youdomen,dc=ru"" -ln "+ sRecord(3)+" -fn "+ sRecord(4)+" -display """+sRecord(2)+""" -desc desc -company ff -office "+ sRecord(8)+" -email @gu1.local -title """+ sRecord(7)+""" -dept """+ sRecord(6)+"""")
userCount = userCount + 1
Wend
WScript.Echo userCount & " Users created."

Решение 2 вариант:

Добавляем из CSV Файла при помощи objContainer.Create


On Error Resume Next
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://OU=test," &  objRootDSE.Get("defaultNamingContext"))
Set fs = CreateObject("Scripting.FileSystemObject")
Set ImportFile = fs.OpenTextFile("test_import.csv",1)
userCount = 0
while ImportFile.AtEndOfStream <> VBTrue
userRecord = ImportFile.Readline
sRecord = Split(userRecord,";")
Set objLeaf = objContainer.Create("Contact", "cn=" & sRecord(2))
objLeaf.Put "telephoneNumber", sRecord(9)
objLeaf.Put "sn", sRecord(3)
objLeaf.Put "givenName", sRecord(3)
objLeaf.Put "department", sRecord(4)
objLeaf.Put "description", sRecord(6)
objLeaf.Put "displayName", sRecord(2)
objLeaf.SetInfo
userCount = userCount + 1
Wend
WScript.Echo userCount & " Users created."

Решение 3 вариант:

Добавляем из CSV Файла при помощи PowerShell, этот вариант не получился


$employees = import-csv 1.csv
[ADSI] $ou =
"LDAP://localhost:389/ou=test,dc=youdomen,dc=ru"
foreach ($record in $employees)
{
 $newUser = $ou.Create("user", "cn=$($record.User)")
 $newUser.Put("title", $record.Title)
 $newUser.Put("employeeID", $record.employeeID)
 $newUser.Put("description", $record.Description)
 $newUser.SetInfo()

Решение 4 вариант:

Еще один вариант не проверял.

# ADXLSSync.ps1 PowerShell shs 20100630
cls
#Путь к справочнику сотрудников
$TelSPR="\\server\share\телефоны_сотрудников.xls"
#Имя листа (WorkSheet) рабочей книги Excel
$SheetName="номера"
#"Запускаем" Excel (создаем COM-объект Excel.Application)
$objExcel=New-Object -comobject Excel.Application
#выполняем открытие файла ("Рабочей книги") в Excel
$objWorkbook=$objExcel.Workbooks.Open($TelSPR)
#Номер колонки, содержащей ФИО
$ColumnName=3
#Номер колонки, содержащей первую часть № телефона
$ColumnTel1=4
#Номер колонки, содержащей вторую часть № телефона
#(некоторые номера телефонов могут занимать 2 ячейки)
$ColumnTel2=5
#
#Константа для использования с методом SpecialCells
$xlCellTypeLastCell = 11
#
#Получаем номер последней используемой строки на листе
$TotalsRow=$objWorkbook.Worksheets.Item($SheetName).UsedRange.SpecialCells($xlCellTypeLastCell).CurrentRegion.Row
#
#Выполняем перебор строк в открытом файле Excel
for ($Row=1;$Row -le $TotalsRow; $Row++) {
#Сохраняем в переменных значения соответствующих ячеек
$UserName=$objWorkbook.ActiveSheet.Cells.Item($Row, $ColumnName).Value()
$Tel1=$objWorkbook.ActiveSheet.Cells.Item($Row, $ColumnTel1).Value()
$Tel2=$objWorkbook.ActiveSheet.Cells.Item($Row, $ColumnTel2).Value()
#Если эти значения не нулевые, то...
if (($UserName -ne $null) -and ($Tel1 -match "\d+")) {
#Сформируем новый тел. номер
if ($Tel2) {$Tel="($Tel1)$Tel2"}
else {$Tel=$Tel1}
#Работаем только с теми пользователями, чье имя состоит из 3х слов (т.е. полное ФИО),
#если имя состоит менее, чем из 3х слов, то такую запись игнорируем
if ($UserName -match "(?:\w+\s+){2}\w+") {
#Пропишем пользователю тел. номер, если пользователь не отключен (enabled)
try {
Get-QADUser $UserName -enabled | Set-QADUser -PhoneNumber $Tel|Out-Null #-WhatIf
$ReportString=("{0,-35} <-> {1,10}" -f $UserName, $Tel)
}
catch {
$ReportString=("{0,-35} <-> {1,10}" -f $UserName, "Ошибка записи номера телефона")
}
Write-Host $ReportString
}
}
}
#Закрываем книгу Excel
#$objWorkbook.Close()
$objExcel.Workbooks.Close()
#Выходим из Excel (вернее даем команду на выход из Excel)
$objExcel.Quit()
#обнуляем объект
$objExcel = $null
#запускаем принудительную сборку мусора для освобождения памяти и окончательного завершения процесса
[gc]::collect()
[gc]::WaitForPendingFinalizers()

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


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

проверка * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.