Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Не работает импорт пользователей в AD из CSV-файла

Ответить
Настройки темы
PowerShell - Не работает импорт пользователей в AD из CSV-файла

Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: fcdm25
Дата: 21-02-2014
Вложения
Тип файла: zip file.zip
(26.3 Kb, 10 просмотров)
Здравствуйте, сегодня решил загрузить пользователей в AD из csv. В интернете нашел много примеров, но они почему то не запускаются на моем сервере и выдает ошибку
Лог ошибки

Код: Выделить весь код
New-ADUser : Объект каталога не найден
C:\Users\Администратор\Desktop\script.ps1:18 знак:5
+     New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalNam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (CN=\ \ ,OU=Цент...с,DC=edu,DC=guu:String) [New-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.NewADUser
 
New-ADUser : Объект каталога не найден
C:\Users\Администратор\Desktop\script.ps1:18 знак:5
+     New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalNam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (CN=\ \ ,OU=Цент...с,DC=edu,DC=guu:String) [New-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.NewADUser
 
New-ADUser : Объект каталога не найден
C:\Users\Администратор\Desktop\script.ps1:18 знак:5
+     New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalNam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (CN=\ \ ,OU=Цент...с,DC=edu,DC=guu:String) [New-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.NewADUser

Скрипт
Скрипт PS

Код: Выделить весь код
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter ";" -Path "C:\Users\Администратор\Desktop\user.csv"  
foreach ($User in $Users)  
{  
    if ($User.OU -eq "")  #если OU пустая создаем в Others
    {
        $OU = "OU=Others,DC=edu,DC=guu"  
    }
    else {
        $OU = "OU=Центр новых информационных технологий (ЦНИТ), OU=Подразделения\, обеспечивающие учебный процесс" + $User.OU + ",DC=edu,DC=guu"
    }
    $Password = $User.Password
    $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName
    $UserFirstname = $User.FirstName
    $UserLastName = $User.LastName
    $JobTitle = $User.JobTitle
    $SAM= $User.Login + "@edu.guu"
    New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -Surname  $User.LastName -Title $JobTitle  -AccountPassword  (ConvertTo-SecureString -AsPlainText "P@ssword2" -Force) -Enabled $true -Path $OU 
}

Так же во вложении есть пример нашего леса и csv файл (unicode).
csv-файл

Login,Password,LastName,FirstName,MiddleName,OU,JobTitle
user1,braY2sPe1,Иванов ,Антон,Анатольевич,Отдел телекоммуникационного обеспечения,Программист
user2,braY2sPe2,Петров,Антон,Алексеевич,Отдел телекоммуникационного обеспечения,Программист
user3,braY2sPe3,Сидоров,Антон,Олегович,Отдел телекоммуникационного обеспечения,Программист 1 категории

На DC включена функция обработки скриптов
Код: Выделить весь код
Set-ExecutionPolicy Unrestricted
Загружен модуль
Код: Выделить весь код
import-module activedirectory
Все данные введены через запятую. Пароль соответствует требованиям.
Кто может помочь с данной проблемой?

UPD0: Пробовал менять «;» на «,» результатов не принесло
UPD1:Заменил @password на "password"

Отправлено: 16:25, 20-02-2014

 

Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun, как я понимаю строка
Код: Выделить весь код
Get-ADUser -Filter "Name -eq 'Test User'" -Server GC:3268
отвечает за поиск по лесу AD?

Цитата Kazun:
Вопрос мне неясен,что конкретно требуется в итоге. »
Я хотел дописать скрипт, чтобы он проходил весь "лес" AD до последнего "листа".


Например

Поиск по всем вложениям каталога GUU
Если ("отдел сопровождения асу" из AD == "отдел сопровождения асу" из csv) то
данные из CSV записываются в этот каталог.
иначе пользователи попадают в other

Последний раз редактировалось fcdm25, 21-02-2014 в 17:58.


Отправлено: 09:39, 21-02-2014 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


отвечает за поиск по лесу AD? - За поиск в Global Catalog

Если лес состоит из одного домена, то:

# Получим все имена OU в GUU
Код: Выделить весь код
$allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=GUU,DC=edu,DC=guu" | Foreach {$_.Name}
и останется изменить строку:

Код: Выделить весь код
if ($allou -notcontains $User.OU)  
{
        $OU = "OU=Others,DC=edu,DC=guu"  
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:45, 21-02-2014 | #12


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun, спасибо.
У меня получился вот такой скрипт
Код: Выделить весь код
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter ";" -Path "C:\Users\Администратор\Desktop\user.csv"
foreach ($User in $Users)  
{  
    if ($allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=GUU,DC=edu,DC=guu")  
    {
        $OU = "OU=Others,DC=edu,DC=guu"  
    }
    $Password = $User.Password
    $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName
    $UserFirstname = $User.FirstName
    $UserLastName = $User.LastName
    $JobTitle = $User.JobTitle
    $SAM= $User.Login + "@edu.guu"
    New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -Surname  $User.LastName -Title $JobTitle  -AccountPassword  (ConvertTo-SecureString -AsPlainText "P@ssword2" -Force) -Enabled $true -Path $OU
}

Отправлено: 10:00, 21-02-2014 | #13


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter ";" -Path "C:\Users\Администратор\Desktop\user.csv"
$allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=GUU,DC=edu,DC=guu"
foreach ($User in $Users)  
{ 
    $ou = $allou | Where {$_.Name -eq $User.OU}
    
    if ($ou) {
        $OU = $ou.DistinguishedName 
    }
    else {
	$OU = "OU=Others,DC=edu,DC=guu"
    }
	
    $Password = $User.Password
    $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName
    $UserFirstname = $User.FirstName
    $UserLastName = $User.LastName
    $JobTitle = $User.JobTitle
    $SAM= $User.Login + "@edu.guu"
	New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -Surname  $User.LastName -Title $JobTitle  -AccountPassword  (ConvertTo-SecureString -AsPlainText "P@ssword2" -Force) -Enabled $true -Path $OU
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:20, 21-02-2014 | #14


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun, большое Вам спасибо. У меня остался последний вопрос это возмодно ли сдлеать так, чтобы если каталога нет, то он отправлял бы пользователя в каталог Other. Верно ли мое исправление
Код: Выделить весь код
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter ";" -Path "C:\Users\Администратор\Desktop\user.csv"
$allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=GUU,DC=edu,DC=guu"
foreach ($User in $Users)  
{ 
    $ou = $allou | Where {$_.Name -eq $User.OU}
    
    if ($ou) {
        $OU = $ou.DistinguishedName 
    }
    else ($ou){
	$OU = "OU=Others,DC=edu,DC=guu"
    }
	
    $Password = $User.Password
    $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName
    $UserFirstname = $User.FirstName
    $UserLastName = $User.LastName
    $JobTitle = $User.JobTitle
    $SAM= $User.Login + "@edu.guu"
	New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -Surname  $User.LastName -Title $JobTitle  -AccountPassword  (ConvertTo-SecureString -AsPlainText "P@ssword2" -Force) -Enabled $true -Path $OU
}
Так же хотел у Вас узнать как у специалиста PowerShell какой курс лучше всего подходит начинающему администратору для автоматизации. Мне показалось, что курс M6434 больше всего для этого подходит

Последний раз редактировалось fcdm25, 21-02-2014 в 12:25.


Отправлено: 12:12, 21-02-2014 | #15


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


1) Заменить else ($ou){ на else { - и будет работать
2) Я никогда не был на курсах, так что не могу ничего сказать о них.

Отправлено: 13:39, 21-02-2014 | #16


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Kazun:
Заменить else ($ou){ на else { - и будет работать »
Я пробовал так делать, тогда он пишет "каталог не найден".
Цитата Kazun:
Я никогда не был на курсах, так что не могу ничего сказать о них. »
Спасибо, я сейчас начал читать книгу "Введение в технологии языка сценариев для пользователей без базовых знаний". Просто первый раз столкнулся с PS, язык очень интересный и как я понимаю в дальнейшем MS планирует все продукты заточить под него

Отправлено: 14:01, 21-02-2014 | #17


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата fcdm25:
и как я понимаю в дальнейшем MS планирует все продукты заточить под него »
Нет, все — не планирует .

Отправлено: 14:43, 21-02-2014 | #18


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, я просто смотрю в System Center, Windows Server, SQL Server в PS достаточно плотно интегрирован.

Отправлено: 14:51, 21-02-2014 | #19


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ну, есть ещё Microsoft Office, вряд ли кто-то будет менять в нём VBA на PowerShell .

По поводу же остального добра — то не «продукты затачиваются под PowerShell», а на PowerShell создаётся ряд командлетов, облегчающих работу с теми или иными продуктами. Впрочем, ничто не мешает пользовать в PowerShell вместо командлетов старый добрый Automation или непосредственно WinAPI.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:58, 21-02-2014 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Не работает импорт пользователей в AD из CSV-файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Добавление информации из csv-файла в AD с обработкой IvanXXL Скриптовые языки администрирования Windows 12 23-07-2014 10:49
2012 R2 - [решено] Не работает импорт пользователей в AD из CSV-файла fcdm25 Windows Server 2012/2012 R2 1 21-02-2014 19:51
PowerShell - PowerShell: импорт данных в AD из файла Perersmeshnik Скриптовые языки администрирования Windows 2 20-02-2014 09:44
PowerShell - [решено] Импорт из CSV в AD с помощью PowerShell rox33 Скриптовые языки администрирования Windows 23 20-07-2012 15:45
PowerShell - Импорт пользователей с помощью POwerShell и CSV файла. Temafet Скриптовые языки администрирования Windows 19 18-01-2012 16:45




 
Переход