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

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

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

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


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

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


Доброго времени суток.

Прошу помочь в решении посредством PowerShell следующей задачи:
Есть users1s.csv - содержащий два поля - полное ФИО (name) и табельный номер (tabnum), необходимо в AD найти сотрудника с таким ФИО (при условии, что в AD вместо полного отчества есть только инициал) и добавить в поле почтового индекса табельный номер, удалив при этом запись об этом сотруднике из users1s.csv, чтобы в итоге в файле остались только необработанные сотрудники.
P.S. Обращение к AD необходимо реализовать с помощью командлетов PowerGUI.

Отправлено: 09:55, 13-07-2011

 

Googler


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

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


Цитата IvanXXL:
при условии, что в AD вместо полного отчества есть только инициал »
по каким конкретно атрибутам сравнивать?

Цитата IvanXXL:
Обращение к AD необходимо реализовать с помощью командлетов PowerGUI. »
AFAIK PowerGUI использует ActiveRoles Management Shell for Active Directory

Отправлено: 09:42, 14-07-2011 | #2



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

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


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


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

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


Цитата amel27:
по каким конкретно атрибутам сравнивать? »
По фамилии, имени и инициалу отчества.
Цитата IvanXXL:
P.S. Обращение к AD необходимо реализовать с помощью командлетов PowerGUI. »
Цитата amel27:
AFAIK PowerGUI использует ActiveRoles Management Shell for Active Directory »
В домене присутствует только серверы с Windows Server 2003.

Отправлено: 10:18, 14-07-2011 | #3


Googler


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

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


примерно так:
Код: Выделить весь код
$file="file.csv"
$temp="temp.csv"
Get-Content $file|Out-File $temp -Encoding "Unicode"

$header = "FIO","Index"
$csv = Import-CSV $temp -header $header

$csv | Select-Object @{Name="FIO"; Expression={($_.FIO).Split(" ")}}, Index | ForEach-Object {
  $index = $_.Index
  $user = get-QADUser -SearchRoot 'domain.local/Users' -LastName $_.FIO[0] -FirstName $_.FIO[1] -Initials ($_.FIO[2]).Substring(0,1) -ErrorVariable errs 2>&1
  $user | set-QADUser -PostalCode $index -ErrorVariable errs 2>&1
  If ($errs.Count -gt 0) { Out-File $file -InputObject ($_.FIO[0]+" "+$_.FIO[1]+" "+$_.FIO[2]+","+$_.Index) -Encoding "Default" }
} | Out-Null
в 1-м блоке исходный файл перекодируется в Unicode (для Import-CSV)
во 2-м блоке полученный файл загружается в переменную $csv
ну и 3-й блок - собственно конвейер обработки

P.S. предполагается, что исходный CSV в ANSI и не содержит заголовка

Последний раз редактировалось amel27, 15-07-2011 в 04:52.

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

Отправлено: 14:05, 14-07-2011 | #4


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


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

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


Цитата amel27:
примерно так: »
Скрипт не работает в части внесения табельного номера в AD. После того как закоментировал строку "| Out-Null" получаю при выполнении сообщение об ошибке:
Код: Выделить весь код
Set-QADUser : Не удается проверить аргумент для параметра "Identity". Аргумент пустой или имеет значение NULL. Укажите не п
устой аргумент, не имеющий значение NULL, после чего повторите выполнение команды.
O:\_ps\TabNumInAD.ps1:12 знак:22
+   $user | set-QADUser <<<<  -PostalCode $index -ErrorVariable errs 2>&1
    + CategoryInfo          : InvalidData: (:) [Set-QADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets.Se 
   tUserCmdlet

Отправлено: 06:46, 15-07-2011 | #5


Googler


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

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


Цитата IvanXXL:
сообщение об ошибке »
Это штатная ошибка - говорит о том, что объект с заданными условиями не найден, соответственно операция установки параметра проваливается. Для конкретики нужен пример исходного CSV в несколько строк.

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


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


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

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


Цитата amel27:
Это штатная ошибка - говорит о том, что объект с заданными условиями не найден, соответственно операция установки параметра проваливается. Для конкретики нужен пример исходного CSV в несколько строк. »
Вот пример csv-файла:
Код: Выделить весь код
Иванов Петр Сергеевич;1234567890
Петров Сергей Иванович;0987654321

Отправлено: 08:30, 15-07-2011 | #7


Googler


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

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


Цитата IvanXXL:
пример csv-файла »
дык, разделителем по умолчанию является запятая, другие нужно явно указывать:
Код: Выделить весь код
$file="file.csv"
$temp="temp.csv"
Get-Content $file|Out-File $temp -Encoding "Unicode"

$header = "FIO","Index"
$csv = Import-CSV $temp -header $header -delimiter ";"

$csv | Select-Object @{Name="FIO"; Expression={($_.FIO).Split(" ")}}, Index | ForEach-Object {
  $index = $_.Index
  $user = get-QADUser -SearchRoot 'domain.local/Users' -LastName $_.FIO[0] -FirstName $_.FIO[1] -Initials ($_.FIO[2]).Substring(0,1) -ErrorVariable errs 2>&1
  $user | set-QADUser -PostalCode $index -ErrorVariable errs 2>&1
  If ($errs.Count -gt 0) { Out-File $file -InputObject ($_.FIO[0]+" "+$_.FIO[1]+" "+$_.FIO[2]+";"+$_.Index) -Encoding "Default" }
} | Out-Null
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:42, 15-07-2011 | #8


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


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

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


Цитата amel27:
дык, разделителем по умолчанию является запятая, другие нужно явно указывать »
Я - птица, долбящая дерево

Скрипт работает, спасибо огромное!

Отправлено: 08:53, 15-07-2011 | #9


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


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

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


Изображения
Тип файла: jpg 2014-07-22_161441.jpg
(221.2 Kb, 9 просмотров)
Тип файла: jpg 2014-07-22_162407.jpg
(238.2 Kb, 5 просмотров)
Тип файла: jpg 2014-07-22_162553.jpg
(167.8 Kb, 5 просмотров)

Очень нужна помощь! Как перезапустить службу в Power Shell на локальном компьютере, сделал только это, а дальше заплутал. Помогите, плизззззз!

Отправлено: 17:42, 22-07-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Сложное преобразование xls или csv файла в текстовый tarasov.evgeny Скриптовые языки администрирования Windows 1 29-05-2011 15:04
[решено] Добавление OEM информации - все вопросы ANDYru Автоматическая установка Windows 2000/XP/2003 228 05-09-2010 09:52
CMD/BAT - Добавление информации в реестр, с помощью мастера планирования заданий achsel Скриптовые языки администрирования Windows 5 04-05-2010 18:42
Получение и обработка информации из текстового файла ya158 AutoIt 3 11-09-2009 01:24
Добавление информации на сайт через вэб-интерфейс Vopros Вебмастеру 1 26-06-2003 08:50




 
Переход