Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
PowerShell - [решено] Массовое изменения информации в AD

Старожил


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

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


Доброго времени суток.
Коллеги окажите помощь в решении тривиальной задачи.
Цель:
1 скрипт:
Необходимо выгрузить в csv(txt) для дальнейшей обработки поля разделенный запятой (табуляцией) в формате представленном ниже с возможностью выбора OU (без лишних добавок)
Пример: Иванов Иван Иванович, Отдел строительных решений, Главный специалист, Главный специалист Отдела строительных решений
Скрытый текст
$_.directreports | Foreach {
$server = $_.split(",") -match "DC=" -replace "DC=" -join "."

ФИО (или для дальнейшей обработки проще "cn") Отдел, Должность, Описание
2 скрипт:
Далее будут изменены поля Отдел, Должность, Описание и их необходимо обновить в AD игнорируя значения которые не изменялись.
Если проще добавить тока измененные данные отредактированного csv (txt) пойдет
Изменения так же должны происходить в определенной OU
Спасибо большое.

Отправлено: 13:50, 13-07-2016

 

Ветеран


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

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


Код: Выделить весь код
# Выгрузить	
$prop = Write-Output samaccountname displayname department title description
Get-ADUser -Filter * -SearchBase "OU=Test,DC=Contoso,DC=Com" -Properties $prop | Select $prop | Export-Csv users.csv -NoTypeInformation -Encoding UTF8

# Обновление
$prop = Write-Output samaccountname displayname department title description
Import-CSV users.csv | Foreach {
	$cuser = $_
	$user = Get-ADUser -Filter "SamAccountName -eq '$($_.samaccountname)'" -Properties $prop
	if($user) {
		$prop | Where {$user."$_" -ne $cuser."$_"} | Foreach {
			Set-ADUser $user -Replace @{"$_" = $cuser."$_"}
		}
	}
}

Последний раз редактировалось Kazun, 13-07-2016 в 15:56.

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

Отправлено: 14:11, 13-07-2016 | #2



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

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


Старожил


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

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


Спасибо огромной, как всегда быстро среагировали, буду тестировать.

Отправлено: 14:24, 13-07-2016 | #3


Старожил


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

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


Странно но выдал ошибку
Код: Выделить весь код
Select-Object : Не удается преобразовать System.Management.Automation.PSObject в один из следующих типов {System.String, System.Management.Automation.ScriptBlock}.
строка:3 знак:93
+ Get-ADUser -Filter * -SearchBase "OU=Users,DC=exp,DC=ru" -Properties $prop | Select <<<<  $prop | Export-Csv d:\users.csv -NoTypeInformation -Encoding UTF8
    + CategoryInfo          : InvalidArgument: (:) [Select-Object], NotSupportedException
    + FullyQualifiedErrorId : DictionaryKeyUnknownType,Microsoft.PowerShell.Commands.SelectObjectCommand

Отправлено: 15:27, 13-07-2016 | #4


Ветеран


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

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


В следующий раз уточняйте версию PowerShell:
Код: Выделить весь код
$prop = "samaccountname","displayname","department","title","description"
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:53, 13-07-2016 | #5


Старожил


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

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


Прощу прощения мало в этом разбираюсь еще, во втором скрипте на обновление так же использую кавычки?

Проверяю обновление
Код: Выделить весь код
Import-Module ActiveDirectory
$prop = "samaccountname","displayname","department","title","description"
Import-CSV D:\users.csv | Foreach {
	$cuser = $_
	$user = Get-ADUser -Filter "SamAccountName -eq '$($_.samaccountname)'" -Properties $prop
	if($user) {
		$prop | Where {$user."$_" -ne $cuser."$_"} | Foreach {
			Set-ADUser $user -Replace @{"$_" = $cuser."$_"
		}
	}
   }
  }
Код: Выделить весь код
Get-ADUser : Фильтр поиска не опознан
строка:5 знак:20
+     $user = Get-ADUser <<<<  -Filter "SamAccountName -eq '$($_.samaccountname)'" -Properties $prop
    + CategoryInfo          : NotSpecified: (:) [Get-ADUser], ADException
    + FullyQualifiedErrorId : Фильтр поиска не опознан,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Отправлено: 15:55, 13-07-2016 | #6


Ветеран


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

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


Вывод Import-CSV users.csv

Отправлено: 16:43, 13-07-2016 | #7


Старожил


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

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


Однако

samaccountname,"displayname","department","title","description"
---------------------------------------------------------------
i.ivanov,"������� ������ ����������","����� ������������� �������������� ������","������� ����������","������� ���������� ������ ������������� �������������� ������"

пере сохранил в UTF8 и ошибка та же
Скрытый текст
Import-CSV d:\users.csv

samaccountname,"displayname","department","title","description"
---------------------------------------------------------------
i.ivanov,"Иванов Иван Викторович","Отдел сопровождения информационных систем","Ведущий специалист","Ведущий специалист Отдела сопровождения информационных систем"

Отправлено: 17:25, 13-07-2016 | #8


Старожил


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

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


Уважаемый Kazun, есть ли возможность подправить скрипт?

Отправлено: 08:48, 14-07-2016 | #9


Ветеран


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

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


Я не вижу проблем в скрипте. Обновите powershell и .Net до актуальной версии на машине. При выгрузке точно выполняли команду ?
Код: Выделить весь код
 Export-Csv users.csv -NoTypeInformation -Encoding UTF8

Отправлено: 10:13, 14-07-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Массовое изменение информации во вкладке "Среда" в AD Mescaline5115 Windows Server 2008/2008 R2 3 19-12-2014 17:01
VBS/WSH/JS - выгрузка из AD информации пользователя Uranich Скриптовые языки администрирования Windows 1 14-02-2013 16:01
Массовое изменение настроек пользователей в AD Win 2003 Fenia Microsoft Windows NT/2000/2003 5 25-06-2012 17:01
AD и сбор информации о клиентском ПО Trinux Microsoft Windows NT/2000/2003 1 07-09-2011 14:37
CMD/BAT - [решено] AD массовое переименование пользователей toperx Скриптовые языки администрирования Windows 9 24-07-2009 12:46




 
Переход