Войти

Показать полную графическую версию : Импорт пользователей с помощью POwerShell и CSV файла.


Temafet
28-11-2011, 17:09
Добрый день. Столкнулся с такой проблемой, есть сервер - Windows 2008r2 с установленный на нем AD.
Решил написать скрипт который будет импортировать пользователей из csv файла

import-csv C:\Distr\temp\import.csv | ForEach-Object {New-ADUser `
-Name $_.Name `
-SamAccountName $_.SamA `
-DisplayName $_.Name `
-CannotChangePassword $false `
-ChangePasswordAtLogon $true `
-City $_.City `
-Department $_.Department `
-Title $_.Title `
-UserPrincipalName $_.UPN `
-EmailAddress $_.Email `
-Organization $_.organiz `
-OfficePhone $_.Tel `
-AccountPassword $_.password `
}

соответственно csv файл имеет формат


Name;SamA;Name;City;Department;Title;UPN;Email;organiz;Tel
Kvakin;Kvakin;Kvakin;Москва;968;Konstruktor;vsherbachenko@cb.npo;vpshch@cb.npo;test;28-50

на что powershell пишет ошибку - New-Aduser : не удается проверить аргумент для параметра "Name". Аргумент пустой или имеет значение NULL.
Помогите пжста решить проблемму, что делаю не так?

Kazun
28-11-2011, 17:40
1) Name;SamA;Name - почему два Name?
2) import-csv C:\Distr\temp\import.csv - корректно отображает данные?

Temafet
28-11-2011, 18:31
1) Извиняюсь, опечатался.
2) Выводит знаки вопросов в место русских букв. Хотя в csv все нормально, проблема в кодировке?

Kazun
28-11-2011, 19:03
2) Да проблема в кодировке,надо сохранить в Unicode(Notepad -SaveAs - выбираем Unicode).

Temafet
28-11-2011, 19:12
Знаки вопросов исчезли, но шибка - не удается проверить аргумент для параметра "Name". Аргумент пустой или имеет значение NULL осталась( В чем еще может быть ошибка?

Kazun
28-11-2011, 19:25
Покажите действительные данные,которые у вас есть,приведите пример,реальных данных,где происходит данная проблема, и привести сюда ошибку.Так как приведенные данные в вопросе,отрабатывают без проблем. Корректно ли определяется разделитель ";"?

import-csv C:\Distr\temp\import.csv | %{$_.Name} - работает?

Temafet
28-11-2011, 19:48
Команда import-csv C:\Distr\temp\import.csv | %{$_.Name} - ничего не выводит

Пример реальных данных
Параметр OU не используется

UPN;SamA;Name;City;Department;Title;Email;Ou;Tel;organiz
lbaranova@cb.npo;lbaranova;Баранова Л.А;Химки;968;Инженер;lbaranova@cb.npo;cb.npo/dep/969;31-02;НПО

Kazun
28-11-2011, 20:23
Попробуйте запустить:
import-csv C:\Distr\temp\import.csv -Delimeter ";"

Temafet
28-11-2011, 20:33
Ошибка - Import-Csv : Не удается найти параметр, соответствующий имени параметра "Delimeter".

Kazun
28-11-2011, 20:51
Описался -Delimiter

Temafet
28-11-2011, 20:52
Выводит -

UPN;SamA;Name;City;Department;Title;Email;Ou;Tel;organiz
--------------------------------------------------------
vsherbachenko@cb.npo;vsherbachenko;Щербаченко В.П;Химки;968;Ведущий специали...

Kazun
28-11-2011, 20:55
import-csv C:\Distr\temp\import.csv -Delimiter ";"

Temafet
28-11-2011, 20:57
Выводит -


UPN : vsherbachenko@cb.npo
SamA : vsherbachenko
Name : Щербаченко В.П
City : Химки
Department : 968
Title : Ведущий специалист ОАО
Email : vpshch@cb.npo
Ou : cb.npo/dep/968
Tel : 28-50
organiz : НПО

Kazun
28-11-2011, 20:59
Файл приложите.

Temafet
28-11-2011, 21:07
файл

Kazun
28-11-2011, 21:09
Никаких проблем.

PS > gc F:\importcsv.csv
UPN;SamA;Name;City;Department;Title;Email;Ou;Tel;organiz
vsherbachenko@cb.npo;vsherbachenko;Щербаченко В.П;Химки;968;Ведущий специалист ОАО;vpshch@cb.npo;cb.npo/dep/968;28-50;Н
ПО
PS > Import-Csv F:\importcsv.csv -Delimiter ";"


UPN : vsherbachenko@cb.npo
SamA : vsherbachenko
Name : Щербаченко В.П
City : Химки
Department : 968
Title : Ведущий специалист ОАО
Email : vpshch@cb.npo
Ou : cb.npo/dep/968
Tel : 28-50
organiz : НПО

Temafet
28-11-2011, 21:17
В том то и дело) А когда начинаю выполнять import.csv.ps1 выводит сообщение - Не удается проверить аргумент для параметра "Name"

Kazun
28-11-2011, 21:25
Все корректно отрабатывает.

http://img406.imageshack.us/img406/7994/98354058.png (http://imageshack.us/photo/my-images/406/98354058.png/)

Uploaded with ImageShack.us (http://imageshack.us)

Temafet
28-11-2011, 21:37
Ну лан, буду дальше разбираться, странно что у вас отрабатывает, а меня пишет именно эту ошибку, хотя все идентично. Спасибо за помощь

mrfedoroff
18-01-2012, 16:45
У меня по вашей схеме тоже не сработало, с той же ошибкой "Не удается проверить аргумент для параметра "Name""

Я так понимаю во время исполнения командлета New-ADUser ему для параметров значения не передаются, т.е. вот этот синтаксис неверен:

-Name $_.Name


Сработала другая комбинация:

$blablabla = Import-Csv users.csv
$blablabla | New-ADUser

только я csv файл предварительно подготовил: заголовки столбцов в точности соответствовали параметрам командлета New-ADUser

"Name","SamAccountName","UserPrincipalName","Surname","GivenName"
"Иван Иванов","i.ivanov","i.ivanov@qq.local","Иванов","Иван"




© OSzone.net 2001-2012