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

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2016/2019/2022 » 2019 - Скрипт PowerShell перенос пользаков с CSV в AD

Ответить
Настройки темы
2019 - Скрипт PowerShell перенос пользаков с CSV в AD

Новый участник


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

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


Есть старая БД по пользователям, нужно занести ее из CSV файла на новый сервер.
Все действия проходят на тестовых виртуалках.
Написал небольшой скрипт в PS по гайдам, но как ни ни получается довести до ума:
Скрипт
Import-Module ActiveDirectory
Import-Csv -Path "C:\Users\Administrator\Desktop\Users.csv" -Encoding Unicode -Delimiter ";"
ForEach-Object {
$uname = $_.LastName + " " + $_.FirstName
$ouz = $_.OU
New-ADUser -Name $uname `
-GivenName $_.FirstName -Surname $_.LastName `
-Title $_.Role -MobilePhone $_.Phone `
-Department $ou -StreetAddress $_.Street `
-PostalCode $_.ZIP -City $_.City `
-Country $_.Country -Path "OU=$ouz,DC=skills39,DC=wsr" `
-AccountPassword ( ConvertTo-SecureString "P@ssw0rd1" -AsPlainTex -Force) `
-Enabled $true `
-CannotChangePassword $true `
}
Import-Csv -Path "C:\Users\Administrator\Desktop\Users.csv" -Delimiter ";"
ForEach-Object {
$uname = $_.LastName + " " + $_.FirstName
$ouz = $_.OU
Add-ADGroupMember -Identity $ouz -Members $uname -passthru
}

Ошибка
Add-ADGroupMember : Cannot validate argument on parameter 'Identity'. The argument is null. Provide a valid value for the argument, and then try
running the command again.
At C:\Users\Administrator\Desktop\Untitled2.ps1:20 char:29
+ Add-ADGroupMember -Identity $ouz -Members $uname -passthru
+ ~~~~
+ CategoryInfo : InvalidData: ( [Add-ADGroupMember], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember


New-ADUser : The object name has bad syntax
At C:\Users\Administrator\Desktop\Untitled2.ps1:6 char:1
+ New-ADUser -Name $uname `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=\\ ,OU=,DC=skills39,DC=wsr:String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADUser

Пример CSV
FirstName;LastName;Role;Phone;OU;Street;ZIP;City;Country;Password
Malachi;Alexander;Overal;(01093) 67264;Overal;Rua C 577;39404-335;Moscow;Russia;P@ssw0rd1

Могу ли сразу добавить в AD и группу и пользователей в нее сразу?
И в чем ошибка в моих действиях?

Отправлено: 15:16, 28-01-2021

 

Ветеран


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

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


между Import-Csv и ForEach-Object нужен оператор конвейера |
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:51, 28-01-2021 | #2



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

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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Вот так попробуйте:
Код: Выделить весь код
$csv = Import-Csv "C:\Users\Administrator\Desktop\Users.csv" -Delimiter ';' -Encoding Unicode

foreach ($user in $csv) {
$uname = $user.LastName + " " + $user.FirstName

New-ADGroup "$($user.ou)" -GroupScope Global

New-ADUser -Name "$uname" `
-GivenName $user.FirstName -Surname $user.LastName `
-Title $user.Role -MobilePhone $user.Phone `
-Department "$($user.ou)" -StreetAddress $user.Street `
-PostalCode $user.ZIP -City $user.City `
-Country $user.Country -Path "OU=$($user.ou),DC=skills39,DC=wsr" `
-AccountPassword (ConvertTo-SecureString "$($user.Password)" -AsPlainText -Force) `
-Enabled $true `
-CannotChangePassword $true

"$($user.ou)" |Add-ADGroupMember -Members (Get-ADUser -Filter "Name -eq '$uname'")
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:31, 29-01-2021 | #3


Новый участник


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

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


Цитата DJ Mogarych:
Вот так попробуйте: »
Выдал ошибки, но создал группы, вижу что только жалуется на готовую группу,
Скрытый текст
New-ADGroup : The specified group already exists
At C:\Users\Administrator\Desktop\Untitled2.ps1:7 char:1
+ New-ADGroup "$($user.ou)" -GroupScope Global
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=Manager,CN=Users,DC=skill39,DC=wsr:String) [New-ADGroup], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:1318,Microsoft.ActiveDirectory.Management.Commands.NewADGroup

New-ADUser : The server is unwilling to process the request
At C:\Users\Administrator\Desktop\Untitled2.ps1:9 char:1
+ New-ADUser -Name "$uname" `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=\\ ,OU=Manager,DC=skills39,DC=wsr:String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.NewADUser

Get-ADUser : A referral was returned from the server
At C:\Users\Administrator\Desktop\Untitled2.ps1:19 char:45
+ ... | Add-ADGroupMember -Members (Get-ADUser -Filter "Name -eq '$uname'")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ( [Get-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8235,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Грешу на сервер т.к. на машине другого офиса сработал на ура этот скрипт:
Скрытый текст
Import-Module ActiveDirectory
Import-Csv C:\users.csv -Delimiter ";" | ForEach-Object{$Name = $_.LN + $_.FN
New-ADUser -Name $Name `
-GivenName $_.FN `
-Surname $_.LN `
-Title $_.Role `
-MobilePhone $_.Phone `
-Department $_.OU `
-StreetAddress $_.Street `
-PostalCode $_.ZIP `
-City $_.City `
-Country RU `
-Path ("OU=" + $_.OU + ",DC=skill39,DC=wsr") `
-AccountPassword (ConverTo-secureString "P@ssw0rd1" -AsPlainText -Force) `
-Enabled $true `
-CannotChangePassword $true}

Import-Csv C:\users.csv -Delimiter ";" | ForEach-Object{$Mem = $_.LN + $_.FN
Add-ADGroupMember -Identity $_.OU `
-Members $Mem}

Последний раз редактировалось Auvick, 29-01-2021 в 13:16.


Отправлено: 11:33, 29-01-2021 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Вероятно, лучше разделить скрипт на 2 части, одна будет создавать группы, а вторая - добавлять туда пользователей.
Так как AD - это база данных, да ещё и с репликацией между серверами, лучше создать группы, подождать несколько минут, и потом уже запускать создание и добавление пользователей в них.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:37, 30-01-2021 | #5


Новый участник


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

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


Цитата DJ Mogarych:
Вероятно, лучше разделить скрипт »
И соответственно первая ошибка о уже созданной группе пропала, но остальное осталось.

Отправлено: 12:36, 01-02-2021 | #6



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2016/2019/2022 » 2019 - Скрипт PowerShell перенос пользаков с CSV в AD

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] скрипт создание контактов в AD из csv файла mcintosh55 Скриптовые языки администрирования Windows 1 23-02-2020 22:10
PowerShell - [решено] PowerShell - скрипт блокировки учетных записей AD, не успевших залогиниться до 9:01 Dmit84 Скриптовые языки администрирования Windows 9 21-11-2017 11:24
PowerShell - [решено] Импорт из CSV в AD с помощью PowerShell rox33 Скриптовые языки администрирования Windows 23 20-07-2012 15:45
2008 R2 - [решено] Windows Server R2 + PowerShell + CSV + AD rox33 Windows Server 2008/2008 R2 1 04-07-2012 11:31
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD alex_frog Скриптовые языки администрирования Windows 6 22-07-2009 18:41




 
Переход