Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Изменение атрибутов всех пользователей AD из exel (http://forum.oszone.net/showthread.php?t=278771)

admt 05-03-2014 15:43 2319515

Изменение атрибутов всех пользователей AD из exel
 
Имеется домен и 4000 пользователей (в домен входят пользователи нескольких дочерних организаций), поставили задачу у всех пользователей изменить атрибуты (если они стоят) и добавить (если их нету) такие как company,department,title,telephoneNumber,mail. Данные выгружают из 1C отдел кадров в Exel файле, типа Организация,ФИО,Должность,Отдел,Номер телефона,Электронный адрес.

сделал из этого файлика csv вида:
company,department,title,displayName,telephoneNumber,mail
ООО Компания,Кадры,Специалист,Петров Иван,+79121111111,petrov@company.ru

Подскажите как можно решить проблему. Помогите с PowerShell т.к. не очень знаю его, но так полагаю что это единственный нормальный способ это сделать.

Спасибо.

exo 05-03-2014 15:53 2319519

можно попробовать dsmod user или Set-ADUser подсунуть ваш csv.
я когда давным давно делал... но немного по другому. не очень красиво, но зато получилось:
я написал команду в Excel для dsmod user, где в полях стояли ваши значения - а потом просто растянул команду на 70 пользователей )
Далее копи-паст всех команд и запуск в командной строке.

admt 05-03-2014 16:03 2319525

Пробовал вот таким вот скриптом но не получаеться
Import-Module ActiveDirectory
#Import CSV
$csv = @()
$csv = Import-Csv -Path "sample.csv"

#Get Domain Base
$searchbase = Get-ADDomain | ForEach { $_.DistinguishedName }

#Loop through all items in the CSV
ForEach ($item In $csv)
{
#Check if the OU exists
$check = [ADSI]::Exists("LDAP://$($searchbase)")

If ($check -eq $True)
{
Try
{
#Check if the User already exists
$Name=$item.Name
$user=Get-ADUser -Filter {Name -eq $Name}
$user.telephoneNumber=$item.telephoneNumber
$user.mail=$item.mail
Set-ADUser -Instance $user
Write-Host "User $($user.Name) changed!"

}
Catch
{
Write-Host "User $($item.Name) is not existed!"
}
}
Else
{
Write-Host "Target OU can't be found! Operation skipped!"
}

megaloman 07-03-2014 18:07 2320516

Вложений: 1
Не берусь предоставить готовое решение - не на чем отладить, да и некогда. ИМХО, надо задачу ставить по другому: у Вас есть Excel-файл, не надо его во что-то преобразовывать, напишите для него макрос. И PowerShell тут не при чём. Как пример прикрепляю Excel - файл, который использую. Один макрос создаёт учетные записи в домене по данным на одном листе, второй - меняет некоторые атрибуты учетки из списка на другом листе. Это не готовое решение для Вашего случая, это направление, где его можно найти.


Время: 03:29.

Время: 03:29.
© OSzone.net 2001-