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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Windows Server 2008/2008 R2 (http://forum.oszone.net/forumdisplay.php?f=97)
-   -   [решено] Windows Server R2 + PowerShell + CSV + AD (http://forum.oszone.net/showthread.php?t=237804)

rox33 03-07-2012 16:36 1945077

Windows Server R2 + PowerShell + CSV + AD
 
Добрый день.
Есть такая проблема. Нужно :
1. Из файла CSV (созданного сторонним продуктом), где находятся имена, почтовые ящики и телефоны пользователей, импортировать список в ActiveDirectory. Пробовал разными способами (dsadd, ps, csvde). Успеха не добился.
2. Вставить в скрипт создания пользователя проверку данных по каждому пользователю (пользователя по полю email определять) и при нестыковках заносить данные из csv в AD.
Итак.
1. Есть CSV файл такого вида:
name;displayname;Password;EmailAddress;MobilePhone; Description
ivan;ivan.ivanov;Qw12345;ivan.ivanov@test.ru;8-999-999-9999;test

Пытаюсь сделать запустить скрипт вида:

читать дальше »
Import-CSV -Path "C:\list.csv" | ForEach-Object -process {New-ADuser -Name $_.Name -Description $_.Description -DisplayName $_.DisplayName -EmailAddress $_.EmailAddress -MobilePhone $_.MobilePhone-Path "ou=Test,dc=Test,dc=ru" -CannotChangePassword $true -ChangePasswordAtLogon $false -PasswordNotRequired $true -AccountPassword $_.Password -Company TEST}


Взят и слегка исправлен отсюда.

При выполнении скрипта выдаёт:


читать дальше »
New-ADUser : Не удается проверить аргумент для параметра "Name". Аргумент пустой или имеет значение NULL. Укажите не пустой аргумент, не имеющий значение NULL, после чего повторите выполнение команды.
C:\3.ps1:1 знак:76
+ Import-CSV -Path "C:\short.csv" | ForEach-Object -process {New-ADuser -Name <<<< $_.Name -DisplayName $_.DisplayName
-EmailAddress $_.EmailAddress -MobilePhone $_.MobilePhone -Path "ou=Users,dc=test,dc=ru" -CannotChangePassword $true -ChangePasswordAtLogon $false -PasswordNotRequired
$true -AccountPassword $_.Password -Company TEST}
+ CategoryInfo : InvalidData: ( [New-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.N ewADUser




На самом деле не привязан к PS. Если есть более доступные способы - готов выслушать.

2. Тут ещё ничего не сделано, т.к. сначала надо бы занести юзверей в AD.

Molchune 04-07-2012 11:31 1945574

Вот смотри
Код:

Add-PSSnapin Quest.ActiveRoles.ADManagement
# Импортируем пользователей из csv файла, где разделителем является ";"
$userCSV=import-csv -Path d:\user.csv -Delimiter ";"
#$userCSV
# Импортируем пользователей из АД
$userAD = Get-QADUser -SizeLimit 0 -SearchRoot test.ru/OU
#$userAD
#сравниваем Пользователей из АД с пользователями в csv файле по свойству Email и выбираем пользователей которых надо добавить в АД
$compare = Compare-Object -ReferenceObject $userAD -DifferenceObject $userCSV -Property Email | Where-Object {$_.SideIndicator -eq "=>"}
$compare
#Проверяем что есть пользователи которых надо добавить
if ($compare.Count -ge '1' ) {
    foreach ($usercompare in $compare) {
        $user = $userCSV| Where-Object {$_.Email -match $usercompare.email}
        $user
        #Добавляем пользователей
        New-QADUser -name  $user.name -DisplayName DisplayName -UserPassword $user.Password -email $user.email -MobilePhone $user.MobilePhone -Description $user.Description  -ParentContainer test.ru/OU -WhatIf
        }
    } else {
        'Новых пользователей нет'
    }

Примечения:
- в csv файлк поле EmailAddress изменил на Email
- для работы с AD исползуется модуль ActiveRoles Management Shell for Active Directory. Его надо сначало скачать и подключается он второй строчкой Add-PSSnapin Quest.ActiveRoles.ADManagement.
- оставил закоменченные строки с отображением всех перменных. Для просмотра прото раскомменть их.
- в строчке New-QADUser.... для создания пользователей убери -WhatIf


Время: 06:06.

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