![]() |
Скрипт PowerShell перенос пользаков с CSV в AD
Есть старая БД по пользователям, нужно занести ее из 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 и группу и пользователей в нее сразу? И в чем ошибка в моих действиях? |
между Import-Csv и ForEach-Object нужен оператор конвейера |
|
Вот так попробуйте:
Код:
$csv = Import-Csv "C:\Users\Administrator\Desktop\Users.csv" -Delimiter ';' -Encoding Unicode |
Цитата:
Скрытый текст
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} |
Вероятно, лучше разделить скрипт на 2 части, одна будет создавать группы, а вторая - добавлять туда пользователей.
Так как AD - это база данных, да ещё и с репликацией между серверами, лучше создать группы, подождать несколько минут, и потом уже запускать создание и добавление пользователей в них. |
Цитата:
|
Время: 19:55. |
Время: 19:55.
© OSzone.net 2001-