Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Массовое изменения информации в AD (http://forum.oszone.net/showthread.php?t=316749)

Fantastish 13-07-2016 13:50 2650451

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

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

Kazun 13-07-2016 14:11 2650461

Код:

# Выгрузить       
$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."$_"}
                }
        }
}


Fantastish 13-07-2016 14:24 2650466

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

Fantastish 13-07-2016 15:27 2650481

Странно но выдал ошибку
Код:

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


Kazun 13-07-2016 15:53 2650493

В следующий раз уточняйте версию PowerShell:
Код:

$prop = "samaccountname","displayname","department","title","description"

Fantastish 13-07-2016 15:55 2650496

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

Проверяю обновление
Код:

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


Kazun 13-07-2016 16:43 2650516

Вывод Import-CSV users.csv

Fantastish 13-07-2016 17:25 2650526

Однако

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

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

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

Fantastish 14-07-2016 08:48 2650706

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

Kazun 14-07-2016 10:13 2650750

Я не вижу проблем в скрипте. Обновите powershell и .Net до актуальной версии на машине. При выгрузке точно выполняли команду ?
Код:

Export-Csv users.csv -NoTypeInformation -Encoding UTF8

Fantastish 14-07-2016 10:19 2650753

да, концовку не изменял, лишь потом открыл csv и отредактировал
А можно пару ссылку откуда что обновить, я ставил пакет администрирования для win7
по поводу краказябр, это я глупость совершил в Excel открыл файл и отредактировал
Мне надо обновиться до версии 4.0?

Fantastish 14-07-2016 11:59 2650780

Обновился до 4 версии но ошибка осталось не обновляет данные
Код:

Get-ADUser : Фильтр поиска не опознан
строка:5 знак:10
+    $user = Get-ADUser -Filter "SamAccountName -eq '$($_.samaccountname)'" -Propert ...
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-ADUser], ADException
    + FullyQualifiedErrorId : Фильтр поиска не опознан,Microsoft.ActiveDirectory.Management.Commands.GetADUser


Fantastish 14-07-2016 13:35 2650802

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


Время: 12:43.

Время: 12:43.
© OSzone.net 2001-