|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Измение атрибутов в полльзователей в АД. Ошибки Operator Not supported |
|
PowerShell - Измение атрибутов в полльзователей в АД. Ошибки Operator Not supported
|
Новый участник Сообщения: 13 |
Подскажите как исправить ошибку. Делаю обновление атрибутов пользователей.
Import-Module ActiveDirectory $Users = Import-Csv -Delimiter ";" -Path "C:\AD\ad-import.csv" Foreach ($CurrentUser in $Users) { $Name = $CurrentUser.Name $Surname = $CurrentUser.Surname $Email = $CurrentUser.EMail $Phone = $CurrentUser.Phone $Organization = $CurrentUser.Organization $JobTitle = $CurrentUser.JobTitle $Login = (Get-ADuser –Filter {GivenName –eq $Name –and Surname –eq $Surname}).SamAccountName #ищем юзера с заданным именем и фамилией и возвращаем его логин Set-ADUser $Login –EmailAddress $Email –MobilePhone $Phone –Company $Organization –Title $JobTitle В итого запуска ошибки: Get-ADUser : Ошибка анализа запроса: "GivenName –eq $Name –and Surname –eq $Surname" Сообщение об ошибке: "Operator Not supported: " с расположением в: "11". строка:21 знак:21 + $Login = (Get-ADuser <<<< –Filter {GivenName –eq $Name –and Surname –eq $Surname}).SamAccountName #ищем юзера с заданным именем и фамилией и возвращаем его логин + CategoryInfo : ParserError: (:) [Get-ADUser], ADFilterParsingException + FullyQualifiedErrorId : Ошибка анализа запроса: "GivenName –eq $Name –and Surname –eq $Surname" Сообщение об ошибке: "Operator Not supported: " с расположением в: "11".,Microsoft.ActiveDirectory.Management.Commands.GetADUser Set-ADUser : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL. Укажите аргумент, не имеющий значение NULL, после чего повторите выполнение команды. строка:23 знак:11 + Set-ADUser <<<< $Login –EmailAddress $Email –MobilePhone $Phone –Company $Organization –Title $JobTitle + CategoryInfo : InvalidData: (:) [Set-ADUser], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser |
|
Отправлено: 12:47, 07-08-2015 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter ";" -Path "C:\AD\ad-import5.csv" $path = "OU=123456,DC=point,DC=pro" Foreach ($CurrentUser in $Users) { $Name = $CurrentUser.Name $Surname = $CurrentUser.Surname $Email = $CurrentUser.EMail $Phone = $CurrentUser.Phone $Organization = $CurrentUser.Organization $JobTitle = $CurrentUser.JobTitle $path = $CurrentUser.Path $DistinguishedName = $CurrentUser.DistinguishedName $Login = Get-ADuser -Filter {GivenName -eq $Name -and Surname -eq $Surname} | Set-ADUser -EmailAddress $Email -MobilePhone $Phone -Company $Organization -Title $JobTitle | Move-ADObject -TargetPath $path } В csv поле path Я правильно понял? Ошибок нет и не переносит, только атрибуты правит. |
Отправлено: 09:27, 19-08-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $path либо вручную указывать, либо в из csv. В одном месте должно быть, а не в 2.
$path = "OU=123456,DC=point,DC=pro" - 1 $path = $CurrentUser.Path - 2 И скопируйте повторно код, который я привел постом выше, а то видимо трудно с первого раза скопировать без ошибок. |
Отправлено: 09:38, 19-08-2015 | #12 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Спасибо работает. Просто хотел чтобы в csv путь писать конечный.
|
Отправлено: 09:50, 19-08-2015 | #13 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Еще вопрос. Получается что в csv для работы скрипта должны быть заполнены все поля. У меня некоторые пользователи не с полной информацией.
Set-ADUser : replace C:\AD\Мои скрипты\Тесты\test.ps1:37 знак:46 + Get-ADuser -Filter {cn -eq $cn} | Set-ADUser <<<< -MobilePhone $Phone -Company $Organization -Title $JobTitle -City $City -Department $Department -PassThru | Move-ADObject -TargetPath $path + CategoryInfo : InvalidOperation: (CN=last111 firs...DC=point,DC=pro:ADUser) [Set-ADUser], ADInvalidOperationException + FullyQualifiedErrorId : replace,Microsoft.ActiveDirectory.Management.Commands.SetADUser |
Отправлено: 13:04, 19-08-2015 | #14 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Пустые значения нельзя передавать, можно $null.
$prop = Write-Output EMail Phone Organization JobTitle Foreach ($CurrentUser in $Users) { $Name = $CurrentUser.Name $Surname = $CurrentUser.Surname $prop | Foreach { if($CurrentUser."$_") { Set-Variable -Name "$_" -Value $CurrentUser."$_" -Force } else { Set-Variable -Name "$_" -Value $null -Force } } $path = $CurrentUser.Path $Login = Get-ADuser $Name | Set-ADUser -EmailAddress $Email -MobilePhone $Phone -Company $Organization -Title $JobTitle -PassThru | Move-ADObject -TargetPath $path } |
Отправлено: 13:35, 19-08-2015 | #15 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Есть атрибут ipPhone - (IP-телефон). Никак не получается добавить его в изменение атрибутов.
|
Отправлено: 10:59, 20-08-2015 | #16 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Set-ADUser .... -Replace @{ipPhone=$ipphone}
|
Отправлено: 11:07, 20-08-2015 | #17 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Подскажите, а как Set-ADUser .... -Replace @{ipPhone=$ipphone} это значение передать. "Пустые значения нельзя передавать, можно $null."
|
Отправлено: 11:05, 25-08-2015 | #18 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:45, 25-08-2015 | #19 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Я правильно понял? Мне нужно если это поле ipphone не заполнено скрипт выполнялся.
Как вот здесь. Если в csv не полная информация передаем значения $null. $prop = Write-Output EMail Phone Organization JobTitle Foreach ($CurrentUser in $Users) { $Name = $CurrentUser.Name $Surname = $CurrentUser.Surname $prop | Foreach { if($CurrentUser."$_") { Set-Variable -Name "$_" -Value $CurrentUser."$_" -Force } else { Set-Variable -Name "$_" -Value $null -Force } } $path = $CurrentUser.Path $Login = Get-ADuser $Name | Set-ADUser -EmailAddress $Email -MobilePhone $Phone -Company $Organization -Title $JobTitle -PassThru | Move-ADObject -TargetPath $path } |
Отправлено: 13:10, 25-08-2015 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Измение значений Gpedit.msc при помощи PowerShell | Zarevich | Скриптовые языки администрирования Windows | 1 | 02-11-2013 21:09 | |
[решено] Ошибки на КД. (Иногда отваливается АД) | Иринка7 | Microsoft Windows NT/2000/2003 | 4 | 18-10-2013 12:10 | |
V. 2010 - В АД уже есть exchange 2003, нужно переехать на 2010, нужно ли обновлять схему АД | akaAmigos | Microsoft Exchange Server | 54 | 30-07-2012 14:10 | |
.NET - измение сетвого шлюза | Sokuro | Программирование и базы данных | 1 | 24-11-2008 03:32 | |
Разное - [решено] удаленное измение громкости звука | nmn | Microsoft Windows 2000/XP | 3 | 28-04-2008 17:17 |
|