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

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

Ответить
Настройки темы
PowerShell - Ошибки в Powershell при создании пользователей

Пользователь


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

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


Что я делаю не так?
Взял скрипт отсюда http://www.howtogeek.com/50187/how-t...th-powershell/

тупо скопировал его
поменял домен
$objOU=[ADSI]“LDAP://OU=abc,DC=contoso,DC=com”
$dataSource=import-csv “users.csv”
foreach($dataRecord in $datasource) {
$cn=$dataRecord.FirstName + ” ” + $dataRecord.LastName
$sAMAccountName=$dataRecord.FirstName + “.” + $dataRecord.LastName
$givenName=$dataRecord.FirstName
$sn=$dataRecord.LastName
$sAMAccountName=$sAMAccountName.ToLower()
$displayName=$sn + “, ” + $givenName
$userPrincipalName=$sAMAccountName + “@contoso.com”
$objUser=$objOU.Create(“user”,”CN=”+$cn)
$objUser.Put(“sAMAccountName”,$sAMAccountName)
$objUser.Put(“userPrincipalName”,$userPrincipalName)
$objUser.Put(“displayName”,$displayName)
$objUser.Put(“givenName”,$givenName)
$objUser.Put(“sn”,$sn)
$objUser.SetInfo()
$objUser.SetPassword(“P@assw0rd”)
$objUser.psbase.InvokeSet(“AccountDisabled”,$false)
$objUser.SetInfo()
}

так выглядит csv
FirstName;LastName
Avis;Flamm
Kurt;Pharris


В результате получаю кучу ошибок

Исключение при вызове "Create" с "2" аргументами: "Был передан недопустимый путь службы каталогов
"
C:\ADscripts\testscript.ps1:11 знак:23
+ $objUser=$objOU.Create <<<< (“user”,”CN=”+$cn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:15 знак:13
+ $objUser.Put <<<< (“givenName”,$givenName)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:16 знак:13
+ $objUser.Put <<<< (“sn”,$sn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:17 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetPassword" с "1" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:18 знак:21
+ $objUser.SetPassword <<<< (“P@assw0rd”)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "InvokeSet" с "2" аргументами: "Свойства службы каталогов не могут быть найдены в кэше.
"
C:\ADscripts\testscript.ps1:19 знак:26
+ $objUser.psbase.InvokeSet <<<< (“AccountDisabled”,$false)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:20 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Create" с "2" аргументами: "Был передан недопустимый путь службы каталогов
"
C:\ADscripts\testscript.ps1:11 знак:23
+ $objUser=$objOU.Create <<<< (“user”,”CN=”+$cn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:15 знак:13
+ $objUser.Put <<<< (“givenName”,$givenName)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:16 знак:13
+ $objUser.Put <<<< (“sn”,$sn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:17 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetPassword" с "1" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:18 знак:21
+ $objUser.SetPassword <<<< (“P@assw0rd”)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "InvokeSet" с "2" аргументами: "Свойства службы каталогов не могут быть найдены в кэше.
"
C:\ADscripts\testscript.ps1:19 знак:26
+ $objUser.psbase.InvokeSet <<<< (“AccountDisabled”,$false)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:20 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Отправлено: 13:34, 29-12-2011

 

Ветеран


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

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


Надо указать разделитель в команде Import-CSv - Import-Csv users.csv -Delimiter ";"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:59, 29-12-2011 | #2



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

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


Пользователь


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

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


Помогло. Спасибо.

Тогда второй вопрос по кодировкам. Excel автоматически сохраняет в ANSI. А powershell у меня ANSI не понимает, слова на русском не записывает. Только если ставить UTF-8 то тогда все OK. Но csv в UTF-8 уже не понимает excel. Есть какое-нибудь решение этой проблемы?

Отправлено: 16:40, 29-12-2011 | #3


Ветеран


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

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


$dataSource = Get-Content users.csv | ConvertFrom-Csv -Delimiter ";"
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:47, 29-12-2011 | #4


Пользователь


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

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


Спасибо! Все заработало. Но появилась следующая проблема. Если у меня какой-то из атрибутов пустой, не вбит в таблице excel то появляется ошибка "Для службы каталогов указан недопустимый синтаксис атрибута" и объект не создается. Можно как-нибудь прописать что если у меня атрибут не вбит что-бы он его и не создавал?

Отправлено: 10:48, 30-12-2011 | #5


Пользователь


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

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


Baggurd
Дружище, извини, что вмешиваюсь в вашу беседу, просто хочу поделиться с тобой, да и с другими кому будет интересно. Я тут давеча скрипт для создание пользователей через модуль Active Directory в PowerShell состряпал. Посмотри может быть будет полезен.

Файл .csv .Разделение между параметрами ";", сохранён в utf8, можно и в utf16
содержимое файла:

Цитата:
LastName;FirstName;login;email;Title;Department;OfficePhone;MobilePhone;Company;Description
Иванов;Иван;i.ivanov;i.ivanov@xxx.kz;Начальник отдела продаж;Отдел продаж;255-55-55 *101;+7 777 1234567;XXX Company, Начальник отдела продаж
Чижов;Сергей;s.chizhov;s.chizhov@xxx.kz;Зам. Начальника отдела продаж;Отдел продаж;255-55-55 *102;+7 777 1234567;XXX Company;Зам. Начальника отдела продаж
Антонов;Антон;a.antonov;a.antonov@xxx.local;Старший сотрудник отдела продаж;Отдел продаж;255-55-55 *103;+7 777 1234567;XXX Company;Старший сотрудник отдела продаж
Содержимое файла .ps1

Цитата:
Import-Module ActiveDirectory
Import-Csv -Delimiter ";" -Path "C:\Users.csv" | Foreach {
New-ADUser -Name ($_.LastName +" "+ $_.FirstName) -GivenName $_.FirstName -Surname $_.LastName `
-DisplayName ($_.LastName +" "+ $_.FirstName) -SamAccountName $_.login -UserPrincipalName ($_.login + "@zzz.local") `
-Path 'OU=Accounts,DC=zzz,DC=local' -EmailAddress $_.email -Company $_.Company -Department $_.Department `
-Title $_.Title -Description $_.Description -OfficePhone $_.OfficePhone -MobilePhone $_.MobilePhone -Country KZ `
-Enabled $true -ChangePasswordAtLogon $true -AccountPassword (ConvertTo-SecureString -string "Passw0rd" -AsPlainText -Force)
}

Отправлено: 11:14, 30-12-2011 | #6


Ветеран


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

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


Baggurd
Сделать условие,что переменная определена и имеет значение,и только потом присваивать параметр.

Отправлено: 11:41, 30-12-2011 | #7


Пользователь


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

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


ratibor79, Проблема в том что module active directory есть только на windows 2008 r2 и windows 7.
Kazun, А где бы посмотреть синтаксис?

Отправлено: 20:51, 30-12-2011 | #8


Пользователь


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

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


Вложения
Тип файла: rar users.rar
(1.2 Kb, 13 просмотров)

Baggurd
Попробуй другой вариант. Скрипт испытан, работает. Единственно в нем вместо ";" используется "`t" - табуляция (при желании можно изменить). В архиве также и прилагается к нему файл из которого экспортируются данные. Посмотри, если не нравиться табуляция замени на ";"

Да ещё если не пойдёт, то в скрипте замени $OU на $objOU, а $u на $objUser
Но по идее должно работать и так

Последний раз редактировалось ratibor79, 30-12-2011 в 21:24.


Отправлено: 21:15, 30-12-2011 | #9


Пользователь


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

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


ratibor79, К сожалению до 16 января попробовать ничего не смогу. Но мне почему-то кажется что этот скрипт примерно такой-же как и мой и если в каком-нибудь поле (например description) ничего не вбить он точно также выдаст ошибку. Вроде бы проще использовать командлеты от Quest. Не знаю есть ли там те же проблемы, попробую как приеду.

Отправлено: 21:47, 30-12-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Импорт пользователей с помощью POwerShell и CSV файла. Temafet Скриптовые языки администрирования Windows 19 18-01-2012 16:45
При создании трансляции вэб-камеры Мозилла вылетает, при этом за что-то извиняется. vovikrus Хочу все знать 2 17-02-2010 19:03
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD alex_frog Скриптовые языки администрирования Windows 6 22-07-2009 18:41
Ошибка - при создании нового подключения при сохранений логина и пароля пишет ошибку 1305 p.s-bagdan Microsoft Windows 2000/XP 1 09-10-2008 09:33
Router - Ошибка при создании сети Glamur Сетевое оборудование 3 03-10-2008 21:49




 
Переход