Войти

Показать полную графическую версию : Сравнение списка групп из файла с ad на наличие группы и вывод результата в файл


VAndreyG
17-08-2021, 22:51
Приветствую!
Подскажите, пожалуйста, как можно реализовать следующее:есть файл csv на 150к строк, содержаться в нем названия групп (SamAccountName), которые надо сравнить с ad, и на выходе получить список с актуальными и не существующими.

DJ Mogarych
18-08-2021, 08:56
Каково строение файла csv?

В целом, как-то так:

foreach ($group in (gc "C:\temp\Группы.txt")) {
try {
get-adgroup "$group" > $null
"$group" >> "C:\temp\Существуют.txt"
}
catch {
"$group" >> "C:\temp\Не существуют.txt"
}
}

VAndreyG
18-08-2021, 09:16
Каково строение файла csv?

В целом, как-то так:

foreach ($group in (gc "C:\temp\Группы.txt")) {
try {
get-adgroup "$group" > $null
"$group" >> "C:\temp\Существуют.txt"
}
catch {
"$group" >> "C:\temp\Не существуют.txt"
}
}


Один Столбец с наименование групп

DJ Mogarych
18-08-2021, 09:40
Ну запустите да попробуйте.

VAndreyG
18-08-2021, 10:02
Ну запустите да попробуйте.
Отрабатывает, но не совсем корректно, что очень странно, отрабатывает, как и мой ранее написанный.. При условии, если имя группы содержит в названии русские буквы, он перемещает её в несуществующие

DJ Mogarych
18-08-2021, 12:54
Потому что импорт текстового файла идёт, скорее всего, с неверной кодировкой. Запустите отдельно
gc "C:\temp\Группы.txt".
Если кодировка неправильная, добавьте параметр
gc "C:\temp\Группы.txt" -encoding utf8

Но опять же, слишком много предположений, т. к. информации от вас немного.

Sham
20-08-2021, 18:03
а try/catch там будет работать? Зависит от настройки обработки ошибок командлетами. SamAccountName лучше через -Identity передать

Elven
20-08-2021, 18:43
SamAccountName лучше через -Identity »
Sham, не критично в данном случае, передается только один параметр.
а try/catch там будет работать? »
будет, хотя и странно, что его используют для этого и таким образом.




© OSzone.net 2001-2012