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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Импорт из CSV в AD с помощью PowerShell

Ответить
Настройки темы
PowerShell - [решено] Импорт из CSV в AD с помощью PowerShell

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


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

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


Изменения
Автор: rox33
Дата: 04-07-2012
Добрый день!
Такая задача стоит:
Из файла .csv (составленного сторонним софтом) импортировать в ActiveDirectory изменения в списоке пользователей, заменяя устаревшую информацию (телефоны, должности) в AD. Новых юзверей создавать не надо. Только менять несоответствующую информацию.
Т.е. есть файл типа:
читать дальше »
displayName;mail;TelephoneNumber;mobile;homephone
Иван Иваныч;ivan.ivanich@test.ru;135;8(921)555-55-55;302

В AD есть пользователь Иван Иваныч, с неправильным или пустым email, телефоном и т.п.
Нужно, чтобы программа меняла данные в AD, при несовпадении с данными из csv.

Долго бьюсь, читал много в интернетах - пока что не получается. Пробовал
вот эту тему , подправим под себя (как умел), не помогло.
Может кто готовое решение показать?

Отправлено: 17:57, 03-07-2012

 

Ветеран


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

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


Код: Выделить весь код
$users = Import-Csv users.csv -Delimiter ";"
$props = $users | Get-Member -MemberType NoteProperty | Select -Expand Name

foreach ($user in $users)
{
	$objuser = ([adsisearcher]"(displayname=$($user.displayName))").FindOne().GetDirectoryEntry()
	$props | Foreach {
		$prop = $_.ToLower()
		if ($user.$prop -ne $objuser.InvokeGet($prop))
		{
			$objuser.Put("$prop",$user.$prop)
		}
	}
	$objuser.SetInfo()
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:00, 03-07-2012 | #2



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

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


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


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

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


Спасибо огромное за скрипт. Всё заработало (была ошибка - разобрался - дело было в csv, пропущено поле).

Вопрос теперь вот какой,сработает ли скрипт, если в csv будет 700 пользователей? (на 5-10 пробовал - всё ок, разницы никакой по-идее, но всё же...)
Можно ли сделать, чтобы он, как критерий отбора, выбирал не displayName, а Mail? (т.е. выбирал по полю email и если оно совпадает с полем email в списке - менял всю несоответствующую информацию).
И ещё такой вопрос, если будут пустые поля, будет ли отрабатывать скрипт дальше, или будет останавливаться и дальше юзверя с ошибкой не пойдёт?

так?
читать дальше »

$users = Import-Csv users.csv -Delimiter ";"
$props = $users | Get-Member -MemberType NoteProperty | Select -Expand Name

foreach ($user in $users)
{
$objuser = ([adsisearcher]"(mail=$($user.mail))").FindOne().GetDirectoryEntry()
$props | Foreach {
$prop = $_.ToLower()
if ($user.$prop -ne $objuser.InvokeGet($prop))
{
$objuser.Put("$prop",$user.$prop)
}
}
$objuser.SetInfo()
}

Последний раз редактировалось rox33, 04-07-2012 в 10:40.


Отправлено: 10:23, 04-07-2012 | #3


Старожил


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

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


Вот смотри.

Код: Выделить весь код
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
- тут только для новых пользователей. Если надо и для редактирования существующих то надо изменить "Where-Object {$_.SideIndicator -eq "=>"}" на "Where-Object {$_.SideIndicator -eq "=="}" и вместо New-QADUser использовать Set-QADUser -Identity $user.email -DisplayName $user.DisplayName -UserPassword $user.Password -Description $user.Description -MobilePhone $user.MobilePhone . В принципе это можно реализовать все в одном скрипте.

Последний раз редактировалось Molchune, 04-07-2012 в 12:06.

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

Отправлено: 11:47, 04-07-2012 | #4


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


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

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


2 Molchune
Спасибо!
Есть вопрос по скрипту:
Если в списке не будет пароля у существующего пользователя - что произойдёт?
Добавлю в csv поле Password, но нужно ли заполнять его у всех юзверей (в принципе это тот же вопрос )?

Цитата:
- тут только для новых пользователей.
Это про что?


ЗЫ проверил работу скрипта - пользователей создаёт (не совсем корректно - но это моя ошибка, наверное). А вот данные при несоответствии - не меняет. Например не поменял телефон (telephonenumber).
А мне бы нужно именно замена данных пользователей (телефоны, должности и т.п.) с определением пользователя по mail'у. Создание это уже плюшка, но не обязательная

Ещё раз спасибо!

ЗЫЫ после вашего скрипта перестал работать скрипт от Kazun'a

Ошибка вот такая:
читать дальше »
Нельзя вызвать метод для выражения со значением NULL.
C:\1.ps1:6 знак:93
+ $objuser = ([adsisearcher]"(displayname=$($user.displayName))").FindOne().GetDirectoryEntry <<<< ()
+ CategoryInfo : InvalidOperation: (GetDirectoryEntry:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Нельзя вызвать метод для выражения со значением NULL.
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : InvalidOperation: (InvokeGet:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Нельзя вызвать метод для выражения со значением NULL.
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : InvalidOperation: (InvokeGet:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Нельзя вызвать метод для выражения со значением NULL.
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : InvalidOperation: (InvokeGet:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Нельзя вызвать метод для выражения со значением NULL.
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : InvalidOperation: (InvokeGet:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Нельзя вызвать метод для выражения со значением NULL.
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : InvalidOperation: (InvokeGet:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull


Дальше больше.
Возможно ли, чтобы Ваш скрипт поменял имена в AD? Внешне - они не изменились...

ЗЫЫЫ Разобрался, Ваш скрипт поменял displayname у большинства пользователей. Со сдвигом по списку. Буду разбираться дальше.
Скорее всего дело в лишней ;

Последний раз редактировалось rox33, 04-07-2012 в 13:51.


Отправлено: 12:25, 04-07-2012 | #5


Старожил


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

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


Он только добавляет новых.
Если пользователь был, то он его не трогает.
Я просто изначально не правильно понял, думал надо сравнить списки из csv и AD и добавить новые.
Если надо изменить инфу уже существующих. То вот так вот. (в принципе это же и прошлый скрипт просто изменены условия) и не создается пользователь а обнвляются параметры.
Код: Выделить весь код
Add-PSSnapin Quest.ActiveRoles.ADManagement
$userCSV=import-csv -Path d:\user.csv -Delimiter ";"
$userAD = Get-QADUser -SizeLimit 0 -SearchRoot test.ru/OU
$compare = Compare-Object -ReferenceObject $userAD -DifferenceObject $userCSV -Property Email | Where-Object {$_.SideIndicator -eq "=="}
    foreach ($usercompare in $compare) {
        $user = $userCSV| Where-Object {$_.Email -match $usercompare.email}
        Set-QADUser -Identity $user.email -DisplayName $user.displayname -UserPassword $user.Password -MobilePhone $user.MobilePhone -Description $user.Description  -WhatIf
        }
Цитата rox33:
Если в списке не будет пароля у существующего пользователя - что произойдёт? »
В случае создания пользователя создаст пользователя но учетка будет отключена.
В случае обновления пользователя просто сбросит пасс.

Цитата rox33:
ЗЫЫЫ Разобрался, Ваш скрипт поменял displayname у большинства пользователей. Со сдвигом по списку. Буду разбираться дальше.
Скорее всего дело в лишней ; »
В принципе не должен был ничего менять со сдвигом.
А csv открыть в Exel то можно? и там будет отлично видно что куда могло уехать.

Последний раз редактировалось Molchune, 04-07-2012 в 14:32.

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

Отправлено: 14:22, 04-07-2012 | #6


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


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

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


2 Molchune
Скрипт всё равно пригодится создание пользователей в планах
В excel открыть сложно автономный сервер, пока офис туда ставить не хотел, когда буду тестить перед боевой машиной - попробую.

В общем, сейчас всё попробую.
Спасибо всем отписавшимся огромнейшее !

Последний раз редактировалось rox33, 04-07-2012 в 18:10.


Отправлено: 14:43, 04-07-2012 | #7


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


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

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


Попробовал.
На QAD скрипт выдаёт такое:
читать дальше »
Set-QADUser : Отсутствует аргумент для параметра "Identity". Укажите параметр типа "Quest.ActiveRoles.ArsPowerShellSnap
In.Data.IdentityParameter" и повторите попытку.
C:\2.ps1:7 знак:30
+ Set-QADUser -Identity <<<< -Email $user.Email -DisplayName $user.displayname -MobilePhone $user.MobilePhone
-Description $user.Description -WhatIf
+ CategoryInfo : InvalidArgument: ( [Set-QADUser], ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets.SetUserCmdlet

Я так понимаю, что он не может считать параметр, который подставляет в Identity. Почему - загадка.

Вот CSV:
читать дальше »
DisplayName;Email;TelephoneNumber;mobile;homephone
Иванов Иван;ivan.ivanov@test.ru;101;495-999-66-99;8-999-999-88-22
Дмитриев Дмитрий;Dmitry.Dmitriev@test.ru;10444;8(921)555-55-55;302
Василий Васильев;vasily.vasiliev@test.ru;11107;+7 (921) 555-8877;+7 (911) 6777777


Список перепроверял миллион раз - не понимаю.
На скрипт, который дал Kazun - всё срабатывает, с изменением на такой скрипт:
читать дальше »
$users = Import-Csv c:\list.csv -Delimiter ";"
$props = $users | Get-Member -MemberType NoteProperty | Select -Expand Name

foreach ($user in $users)
{
$objuser = ([adsisearcher]"(mail=$($user.Email))").FindOne().GetDirectoryEntry()
$props | Foreach {
$prop = $_.ToLower()
if ($user.$prop -ne $objuser.InvokeGet($prop))
{
$objuser.Put("$prop",$user.$prop)
}
}
$objuser.SetInfo()
}


Правда выдаёт ошибку, но делает. Ошибка такая:
читать дальше »
Исключение при вызове "InvokeGet" с "1" аргументами: "Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNO
WNNAME))"
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Исключение при вызове "InvokeGet" с "1" аргументами: "Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNO
WNNAME))"
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Исключение при вызове "InvokeGet" с "1" аргументами: "Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNO
WNNAME))"
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Исключение при вызове "InvokeGet" с "1" аргументами: "Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNO
WNNAME))"
C:\1.ps1:9 знак:41
+ if ($user.$prop -ne $objuser.InvokeGet <<<< ($prop))
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException


Осталось провести более масштабную проверку (до этого проверял на 4-7 пользователях на тестовой машине). Завтра попробую развернуть на большую - посмотрим, что получится.

Последний раз редактировалось rox33, 04-07-2012 в 18:16.


Отправлено: 18:10, 04-07-2012 | #8


Ветеран


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

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


Имена свойств в CSV файле должны быть,такими же,как и аттрибуты в AD(Email должен быть mail). Ограничения на количество пользователей нет в худшем случае упрется в производительность.При возникновении ошибки у конкретного пользователя,скрипт не прерывает своей работы.Можно добавить проверку на пустое свойство в CSV:

Код: Выделить весь код
$user.$prop -ne $objuser.InvokeGet($prop)) -and $user.$prop

Отправлено: 20:39, 04-07-2012 | #9


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


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

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


были ошибки:
читать дальше »
Поменял, всё равно:
читать дальше »
C:\>.\mod.ps1
Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Нельзя вызвать метод для выражения со значением NULL.
C:\mod.ps1:6 знак:78
+ $objuser = ([adsisearcher]"(mail=$($user.mail))").FindOne().GetDirectoryEntry <<<< ()
+ CategoryInfo : InvalidOperation: (GetDirectoryEntry:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Для службы каталогов указан недопустимый синтаксис атрибута.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Служба каталогов не может выполнить операцию на RDN-атрибуте объект
а.
"
C:\mod.ps1:14 знак:17
+ $objuser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

CSV несколько модифицировал теперь оно вида:
читать дальше »
name;DisplayName;mail;TelephoneNumber;mobile;homephone;userprincipalname;sn;Givenname
Иванов Иван;Иванов Иван;ivan.ivanov@test.ru;495-999-66-55;8-926-999-99-99;999;ivan.ivanov;Иванов;Иван


С ним скрипт не отрабатывает.

Если убрать поля name, sm, userprincipalname,givenname - скрипт выдаёт ошибки (из-за пустых полей), но отрабатывает.


Разобался - были поля Name и sn, которые по сути - одно и тоже. Убрал Name - всё заработало.

Такой вопрос ещё, возможно ли добавить к скрипту логирование? Что перезаписал скрипт, что нет. Со временем, если можно.

Последний раз редактировалось rox33, 05-07-2012 в 13:20.


Отправлено: 12:30, 05-07-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Импорт из CSV в AD с помощью PowerShell

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MySQL - Импорт XML в SQL u_ku_shu Программирование и базы данных 8 22-07-2012 17:47
PowerShell - PowerShell bort-747 Скриптовые языки администрирования Windows 0 10-04-2012 11:29
PowerShell - Импорт пользователей с помощью POwerShell и CSV файла. Temafet Скриптовые языки администрирования Windows 19 18-01-2012 16:45
Система - Windows PowerShell shoot Программное обеспечение Windows 13 27-11-2011 02:23
Разное - PowerShell Butunin Klim Программирование и базы данных 1 31-07-2008 18:39




 
Переход