Войти

Показать полную графическую версию : Скрипт для добавления пользователей в AD


Nord18
02-08-2014, 13:45
Доброго времени суток, уважаемые форумчане!

Написал скрипт для добавления пользователей в AD с помощью импорта из CSV-файла.
Скрипт полностью жизнеспособный, но не могу понять как допилить его чтобы еще пользователи добавлялись в Группы безопасности.
Так же не очень понятно как добавить скриптом некоторые атрибуты учетной записи (например полное название страны, отчество сотрудника).
Параметр добавления кода страны указал в скрипте, возможно ли добавить параметр в CSV-файл? Тот же вопрос и с контейнером, в который добавляются пользователи (указан в скрипте).

Import-CSV -Path "D:\Scripts\CreateNewUsersAD.csv"|ForEach-Object -process {New-ADUser -Name $_.Name
-SamAccountName $_.SamAccountName -UserPrincipalName $_.UserPrincipalName
-AccountPassword $_.Password -GivenName $_.GivenName -Surname $_.Surname
-DisplayName $_.DisplayName -Company $_.Company -Department $_.Department -Title $_.Title
-OfficePhone $_.OfficePhone -MobilePhone $_.MobilePhone -State $_.State
-City $_.City -Country "RU" -StreetAddress $_.StreetAddress -PostalCode $_.PostalCode
-CannotChangePassword $false -ChangePasswordAtLogon $false
-PasswordNotRequired $true -Enabled $true -Path "ou=Users_Test,dc=domain,dc=ru"}

Прошу помощи...

В одну группу безопасности пользователей добавил запуском второго скрипта:

Import-CSV -Path "D:\scripts\UserAddGpoup.csv"|ForEach-Object -process{Add-ADGroupMember -Identity $_.Group-Members $_.SamAccountName}

Как добавить сразу в несколько групп по прежнему не понятно.

Код страны добавил соответствующим столбцом Country и значением RU.

Как добавить в CSV-файл поле с контейнером так же не ясно...

Kazun
03-08-2014, 23:15
1) полное название страны, отчество сотрудника - Использовать параметр OtherAttributes
-OtherAttributes @{'msDS-PhoneticDisplayName'="GlenJohn"}

2) В чем проблема указать несколько групп? Разделитель ; в csv файле для перечисления групп или заключить поле в двойные кавычки .

Import-CSV -Path "D:\scripts\UserAddGpoup.csv"| ForEach-Object {
$grs = $_.Group.split(";")
$sam = $_.SamAccountName
foreach($gr in $grs) {
Add-ADGroupMember -Identity $gr -Members $sam
}
}

PS. Необязательно использовать запятую в csv,можно скажем использовать ; и указать Import-CSV -Delimiter ";" и не возникнет проблем с указанием контейнера если там есть запятая.

smol84
04-08-2014, 15:17
Вот скрипт который позволяет добавлять пользователей в режиме реального времени без файла
Write-Host “Welcome to corp”
# Set Variables from User Input
$FirstName = Read-Host “Введите Имя”
$LastName = Read-Host “Введите фамилию”
$ThirdName = Read-Host "Введите отчество"
$Login = Read-Host "Введите Login"
$domain = "corp.int"
$maildomain = "@corp.int"
$DisplayName = ($LastName + " " + $FirstName +" "+ $ThirdName)
$Title = Read-Host “Enter Empolyee’s Title”
$Department = Read-Host “Enter Employee’s Department”
$IPPhone = Read-Host “Enter Employee’s IPPhone Number”
$CN = (“CN=” + $LastName + ” ” + $FirstName + " "+ $ThirdName)
$mail = ($Login+ "" + $maildomain)
$user = ($Login+ "@" + $domain)
$Class = “User”
$strUserName = $CN

#connect to AD and create user
$objADSI = [ADSI]“LDAP://OU=Users,DC=corp,DC=int”
$objUser = $objADSI.Create($Class, $strUserName)
$objUser.Put(“sAMAccountName”, $FirstName)
# Commit the object in AD
$objUser.setInfo()
#Set General Tab Properties
#Bind to the user Object
$objADSI = [ADSI]“LDAP://$CN,OU=User,DC=corp,DC=int”
$objUser.Put(“userPrincipalName”, “$firstName”)
$objUser.Put(“givenName”, “$User”)
$objUser.Put(“SN”, “$LastName”)
$objUser.Put(“DisplayName”, “$DisplayName”)
$objUser.Put(“sAMAccountName”, “$Login”)
$objUser.Put(“Title”, “$Title”)
$objUser.Put(“Department”, “$department”)
$objUser.Put(“IPphone”, “$IPphone”)
$objUser.Put(“mail”, “$mail”)

$objUser.Put(“l”, “город”)
$objUser.Put(“streetAddress”, “улица”)
$objUser.Put(“company”, “ООО ""название"”")
$objUser.Put(“telephoneNumber”, “+7 .....”)


#set UserAccessControl
$objUser.put(“userAccountControl”, 544)
#Commit changes
$objUser.setInfo()

как добавить группы самого интересует
может быть данный скрипт будет полозен

smol84
04-08-2014, 16:21
Если нужно могу выложить VBS скрипт такого же плана только с функцией перевода логина в латиницу состоящим из имя.фамилия

~220V
10-03-2016, 15:52
2) В чем проблема указать несколько групп? Разделитель ; в csv файле для перечисления групп или заключить поле в двойные кавычки .

Import-CSV -Path "D:\scripts\UserAddGpoup.csv"| ForEach-Object {
$grs = $_.Group.split(";")
$sam = $_.SamAccountName
foreach($gr in $grs) {
Add-ADGroupMember -Identity $gr -Members $sam
}
}



Спасибо тебе добрый человек за полезнейший скрипт. Но из-за отсутствия знаний PowerShell намучился с файлом *.csv (Тупил с заголовком)
Посему добавлю формат записи *.csv файла:


SamAccountName,Group
User0,GG_test1;GG_test2;GG_test3
User1,GG_test1
User2,GG_test2




© OSzone.net 2001-2012