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

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

Ответить
Настройки темы
PowerShell - [решено] Проблема с заполнение атрибутов AD

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


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

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


Вложения
Тип файла: rar user.rar
(305 байт, 8 просмотров)
Доброе время суток!!

Есть скрипт для заполнения данных в AD

Код: Выделить весь код
Import-Module ActiveDirectory

cls

try {$users = Import-Csv C:\temp\user.csv -Delimiter ";"}
catch {"Cant load file C:\temp\user.csv"}

try {
	foreach ($user in $users) {
		$name=$user.name
		$title=$user.title
		$department=$user.Department
		$company=$user.company
		$ext10=$user.Ext10
		$ext11=$user.Ext11
		$ext12=$user.Ext12
		$ext13=$user.Ext13
		$ext14=$user.Ext14
	
		Get-ADUser -Filter {name -eq $name} -SearchBase "OU=Company,DC=com,DC=tu,DC=RU" -Properties name,title,Department,company,extensionAttribute10,extensionAttribute11,extensionAttribute12,extensionAttribute13,extensionAttribute14
	
		$tuser = Get-ADUser -Filter {name -eq $name} -SearchBase "OU=Company,DC=com,DC=tu,DC=RU"
		if ($tuser -notlike $null){
			$SAN = $tuser.SamAccountName

			if ($department -notlike ''){
			Set-ADUser $SAN -replace @{Department=$department}
			}
			if ($company -notlike ''){
			Set-ADUser $SAN -replace @{company=$company}
			}
			if ($title -notlike ''){
			Set-ADUser $SAN -replace @{title=$title}
			}
			if ($ext10 -notlike ''){
			Set-ADUser $SAN -replace @{extensionAttribute10=$ext10}
			}
			if ($ext11 -notlike ''){
			Set-ADUser $SAN -replace @{extensionAttribute11=$ext11}
			}
			if ($ext12 -notlike ''){
			Set-ADUser $SAN -replace @{extensionAttribute12=$ext12}
			}
			if ($ext13 -notlike ''){
			Set-ADUser $SAN -replace @{extensionAttribute13=$ext13}
			}
			if ($ext14 -notlike ''){
			Set-ADUser $SAN -replace @{extensionAttribute14=$ext14}
			}
		}
		Write-Host "User $name Changed!!!"
		Write-Host ""
		Write-Host ""
		Get-ADUser $SAN -Properties name,title,Department,company,extensionAttribute10,extensionAttribute11,extensionAttribute12,extensionAttribute13,extensionAttribute14
	}
}
catch {"Error found"}
Есть файл актуализации данных, сохраненный из Excel в формате csv с разделителями(Во вложении)

Помогите, не понимаю в какой кодировке необходимо сохранить файл или как добавить перекодировку в скрипт, что бы данные на русском языке нормально загружались в AD а то сейчас идет "??????????????????" Как это поправить?

Отправлено: 09:21, 20-04-2017

 

Ветеран


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

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


В Excel сохранить как - выбрать CSV UTF-8 (разделитель-запятая)(*.csv) или любой другой редактор в UTF-8(notepad - сохранить как - Кодировка UTF-8).

Если PowerShell 3+, можно указать кодировку для файла, для вашего примера:

Код: Выделить весь код
PS > Import-csv user.csv -Delimiter ";" -Encoding Default | Where Name


name                 : 40TestTT
title                : Старший
Department           : Российской Федерации
company              : Компания
extensionAttribute10 : ТЕРРИТОРИАЛЬНЫЕ УЧРЕЖДЕНИЯ
extensionAttribute11 : СЕВЕРО-ЗАПАДНОЕ
extensionAttribute12 : Северо-Западного
extensionAttribute13 : Отдел
extensionAttribute14 : Сектор

name                 : 40TestTT01
title                : Старший
Department           : Российской Федерации
company              : Компания
extensionAttribute10 : ТЕРРИТОРИАЛЬНЫЕ УЧРЕЖДЕНИЯ
extensionAttribute11 : СЕВЕРО-ЗАПАДНОЕ
extensionAttribute12 : Северо-Западного
extensionAttribute13 : Отдел
extensionAttribute14 : Сектор
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:29, 20-04-2017 | #2



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

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


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


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

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


Код: Выделить весь код
try {$users = Import-Csv C:\temp\user.csv -Delimiter ";" -Encoding Default | Where Name}
Если сделать в таком варианте, то он не находит файл. Или я что то напутал?

Отправлено: 09:43, 20-04-2017 | #3


Ветеран


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

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


Обновить версию PowerShell до актуальной. На данный момент, я думаю версия V2, где нет таких параметров -Encoding Default и нового функционала Where Name.

Посмотреть версию:

Код: Выделить весь код
$PSVersionTable.PSVersion
Подробнее про ошибку , выполнить в консоли:
Код: Выделить весь код
 Import-Csv C:\temp\user.csv -Delimiter ";" -Encoding Default | Where Name
PS. Если не обновлять PowerShell, а использовать V2, тогда пересохранить csv файл в кодировке - UTF8 и использовать скрипт в первоначальном виде.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:00, 20-04-2017 | #4


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


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

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


Версию обновил до 4. Теперь Encoding работает. Вот только почему то не заносит данные в атрибуты extensionAttribute10,extensionAttribute11,extensionAttribute12,extensionAttribute13,extensionAttribu te14 =(

Отправлено: 11:40, 20-04-2017 | #5


Ветеран


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

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


Логично, что таких полей в csv файле -нет.
Код: Выделить весь код
$ext10=$user.Ext10
$ext11=$user.Ext11
$ext12=$user.Ext12
$ext13=$user.Ext13
$ext14=$user.Ext14
И посмотреть в консоли, все ли правильно:

Код: Выделить весь код
Import-Csv C:\temp\user.csv -Delimiter ";"
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:43, 20-04-2017 | #6


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


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

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


Точно, с тупил пока игрался на старой версии поменял, а обратно не сделал ) Спасибо огромное!!!!

Отправлено: 12:11, 20-04-2017 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] заполнение поля "IP телефон" в карточке пользователя AD K2G Скриптовые языки администрирования Windows 3 12-03-2019 13:33
PowerShell - [решено] AD - Добавление в группу на основе атрибутов rudimko Скриптовые языки администрирования Windows 24 26-08-2015 13:20
PowerShell - Изменение атрибутов всех пользователей AD из exel admt Скриптовые языки администрирования Windows 3 07-03-2014 18:07
PowerShell - Автоматическое заполнение атрибутов пользтвателей AD malkinfedor Скриптовые языки администрирования Windows 0 20-12-2010 17:01
Разное - Проблема: полное заполнение оперативной памяти (подр. внутри) GameCube Microsoft Windows Vista 1 23-02-2009 00:14




 
Переход