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

Аватара пользователя
Baggurd

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

Сообщение Baggurd »

Что я делаю не так?

Взял скрипт отсюда
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
Аватара пользователя
Kazun

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

Сообщение Kazun »

Надо указать разделитель в команде Import-CSv - Import-Csv users.csv -Delimiter ";"
Аватара пользователя
Baggurd

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

Сообщение Baggurd »

ratibor79, Попробовал твой скрипт. Та же проблема. Если какое-нибудь поле пустое то не создается этот пользователь. Может быть кто-нибудь знает решение проблемы с примером?
Аватара пользователя
Baggurd

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

Сообщение Baggurd »

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



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

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

Сообщение Baggurd »

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

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

Сообщение Baggurd »

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)

}
Аватара пользователя
Kazun

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

Сообщение Kazun »

Baggurd

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

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

Сообщение Kazun »

ratibor79, Проблема в том что module active directory есть только на windows 2008 r2 и windows 7.

Kazun, А где бы посмотреть синтаксис?
Аватара пользователя
ratibor79

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

Сообщение ratibor79 »

Baggurd

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



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

Но по идее должно работать и так
Вложения
users.rar
(1.24 КБ) 0 скачиваний
users.rar
(1.24 КБ) 0 скачиваний
Ответить

Вернуться в «Скриптовые языки администрирования Windows»