2016-02-17 5 views
0

Моя организация использует Novell в качестве своей основной службы каталогов. Мы находимся в процессе перехода в домен Active Directory. Первоначально я использовал Windows 2003 Server для импорта всех учетных записей из Novell в AD с помощью средства миграции служб Microsoft Directory. Еженедельно я импортирую новые учетные записи из Novell с использованием того же инструмента и выбираю только те подразделения, которые добавили или отключили пользователей.Удаление пользователей из Active Directory OU

На прошлой неделе я был выключен. Другой администратор попытался выполнить еженедельную миграцию и случайно импортировал пользователей в неправильное подразделение. Это создало дубликаты в структуре каталогов. Теперь мне поручено удалить дубликаты.

Я создал список пользователей, которые нужно удалить, экспортируя всех пользователей из правильного целевого подразделения. Теперь я пытаюсь использовать этот список для таргетинга на неправильное подразделение и удаления этих LogonNames. Я не могу использовать SamAccountName, поскольку некоторые учетные записи длиннее 20 символов, а SamAccountName имеет 0 на конце всех дубликатов.

То, что я до сих пор в PowerShell является

Import-Module ActiveDirectory Import-Csv \ test.csv. | ForEach-Object { Remove-ADUser $ _ LogonName -Identity НУ = WRONGOU, DC = MyDomain, dc = Edu -Confirm:. $ Ложная }

Но я не могу получить эту работу.

Что было бы еще более элегантным, это было бы способом сравнить два подразделения и, если это имя появится в обоих случаях, удалите его из неправильного подразделения.

+0

Почему бы не использовать DistinguishedName для идентификации счетов? – TheMadTechnician

+0

@ TheMadTechnician, который все еще оставляет мне подобную проблему. Как я могу создать скрипт для удаления этих учетных записей? – vingamm

+0

Um, 'Import-csv. \ Test.csv | Выберите @ {l = 'Identity'; e = {"CN =" + $ _. LoginName + ", OU = WRONGOU, DC = MyDomain, DC = edu"}} | Remove-ADUser -WhatIf' запустит это, если все выглядит хорошо, тогда удалите '-whatif' – TheMadTechnician

ответ

0

Мы нашли решение для поиска. Не такой элегантный, как мне бы хотелось, но он работает. Один из моих локальных кодеров придумал этот PHP-код. Он извлекает пользователей, заканчивающихся 0, а затем помещает их в отдельный файл csv.

<?php $d = array(); $csv = array_map('str_getcsv', file('users.csv'));foreach($csv as $i){ 
if(substr($i[0], -1) == '0'){ 
    $d[] = '"' . $i[0] . '"'; 
}}file_put_contents('zerousers.txt', implode(PHP_EOL, $d)); 

оттуда нужно только запустить стандартную команду удалить

import-csv c:\zerousers.txt | foreach {Remove-ADUser -Identity $_.samaccountname -Confirm:$false} 
Смежные вопросы