Имеется домен и 4000 пользователей (в домен входят пользователи нескольких дочерних организаций), поставили задачу у всех пользователей изменить атрибуты (если они стоят) и добавить (если их нету) такие как company,department,title,telephoneNumber,mail. Данные выгружают из 1C отдел кадров в Exel файле, типа Организация,ФИО,Должность,Отдел,Номер телефона,Электронный адрес.
сделал из этого файлика csv вида:
company,department,title,displayName,telephoneNumber,mail
ООО Компания,Кадры,Специалист,Петров Иван,+79121111111,petrov@company.ru
Подскажите как можно решить проблему. Помогите с PowerShell т.к. не очень знаю его, но так полагаю что это единственный нормальный способ это сделать.
Спасибо.
PowerShell - Изменение атрибутов всех пользователей AD из exel
-
exo
Re: PowerShell - Изменение атрибутов всех пользователей AD из exel
можно попробовать
я когда давным давно делал... но немного по другому. не очень красиво, но зато получилось:
я написал команду в Excel для dsmod user, где в полях стояли ваши значения - а потом просто растянул команду на 70 пользователей )
Далее копи-паст всех команд и запуск в командной строке.
dsmod user
или Set-ADUser
подсунуть ваш csv.я когда давным давно делал... но немного по другому. не очень красиво, но зато получилось:
я написал команду в Excel для dsmod user, где в полях стояли ваши значения - а потом просто растянул команду на 70 пользователей )
Далее копи-паст всех команд и запуск в командной строке.
-
admt
Re: PowerShell - Изменение атрибутов всех пользователей AD из exel
Пробовал вот таким вот скриптом но не получаеться
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!"
}
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
Re: PowerShell - Изменение атрибутов всех пользователей AD из exel
Не берусь предоставить готовое решение - не на чем отладить, да и некогда. ИМХО, надо задачу ставить по другому: у Вас есть Excel-файл, не надо его во что-то преобразовывать, напишите для него макрос. И PowerShell тут не при чём. Как пример прикрепляю Excel - файл, который использую. Один макрос создаёт учетные записи в домене по данным на одном листе, второй - меняет некоторые атрибуты учетки из списка на другом листе. Это не готовое решение для Вашего случая, это направление, где его можно найти.