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

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

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

Старожил


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

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


Изменения
Автор: pogo
Дата: 23-10-2013
Доброго времени суток.

Задача написать скрипт который выключал бы учётные записи найденные по информации из .csv файла.

Файл .csv следующего содержания (поля могут добавляться, но я думаю, что этих двух полей для идентификации нужного пользователя хватит):

Name;JobTitle
Иванов Иван Иванович;бухгалтер
Петров Пётр Петрович;менеджер

Полю Name из файла в AD соответствует поле Display name

Вопрос, возможно ли по данной информации найти пользователя во всём домене, а не в конкретном OU?

Есть вот тестовый код:

Код: Выделить весь код
cls

Import-Module ActiveDirectory

$Users = Import-Csv "D:\scripts\ps\users.csv" -Delimiter ";"
#$Global:count = 0

function disableUser ($UserName, $JobTitle)
{
    Write-Host ('User: ' + $UserName)
    Write-Host ('JobTitle: ' + $Jobtitle)

    Get-ADUser $UserName | Set-ADUser -Enabled $false
    #$Global:count = $Global:count + 1
}


function main {
    foreach($User in $Users)
    {
        disableUser $User.Name $User.JobTitle
    }
}

main
#Write-Host ('count: ' + $Global:count)
Но он не работает, ошибка:
Цитата:
Get-ADUser : Не удается найти объект с удостоверением: "Иванов Иван Иванович" в "DC=test,DC=ru".
D:\scripts\ps\RemoveUsers.ps1:13 знак:5
Подскажите пожалуйста, что не так делаю?

Отправлено: 10:38, 23-10-2013

 

Старожил


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

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


Добрый день.
Все можно.
Но для простоты я бы посоветовал бы вам поставить коммандлеты от Queest.com
И пользователей все таки лучше искать по logonname а не по displayname(или name).

Отправлено: 13:33, 23-10-2013 | #2



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

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


Старожил


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

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


Цитата Molchune:
Но для простоты я бы посоветовал бы вам поставить коммандлеты от Queest.com »
Для чего? Если для удалённого управления AD, я поставил Remote Server Administration Tools
Цитата Molchune:
И пользователей все таки лучше искать по logonname а не по displayname(или name). »
Я понимаю что лучше, но к сожалению файлик который мне приходит, logonname не содержит.

Отправлено: 13:52, 23-10-2013 | #3


Старожил


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

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


Цитата pogo:
Для чего? »
Просто от Quest там меньше геморроя, в RSAT тебе надо писать функции и делать фильтрации по свойствам.
Для простоты использования и работы в АД. коммандлеты от Quest делают очень хорошо помогают.

К сожалению нет АД под рукой.

Код: Выделить весь код
Import-Module ActiveDirectory
$UserName = "Иванов Иван Иванович"
Get-ADUser $UserName
Находит пользователя?
А вообще какого-нить пользователя находит?

Отправлено: 14:10, 23-10-2013 | #4


Старожил


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

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


Нет, вываливается ошибка такая же как и в моём первом посте.

Отправлено: 14:57, 23-10-2013 | #5


Старожил


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

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


а вообще кого-нить находит?

судя по всему Get-ADuser по умолчанию использует SamAccountName . Поэтому ничего и не находит

Код: Выделить весь код
Import-Module ActiveDirectory
Get-ADuser -Filter 'Name -match "*Иван*"'

Но повторюсь все мои догадки. Так как нет AD
В принципе тут расписано что и как искать
P.S. ну и без "*" попробуйте тоже.

Отправлено: 15:13, 23-10-2013 | #6


Ветеран


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

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


Get-ADUser -Filter 'DisplayName -eq "$UserName"'

PS. Модуль ActiveDirectory не поддерживает регулярные выражение и оператор -match,только wildcard(Get-ADuser -Filter 'Name -like "*Иван*"').

Последний раз редактировалось Kazun, 23-10-2013 в 19:18.

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

Отправлено: 19:12, 23-10-2013 | #7


Старожил


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

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


Спасибо.
Модифицированный вариант:

$login = (Get-ADUser -Filter {DisplayName -eq $userName -and Title -eq $jobTitle}).SamAccountName

Так мы получаем SamAccountName, т.е. логин, найденного по двум условиям пользователя.

Подскажите пожалуйста, для удаления этого пользователя из разных групп, я могу как то сразу через Set-ADUser удалить у пользователя группы в которых он состоит или мне надо искать все группы в которых он состоит и удалять уже из них, что то вроде Get/Set-ADGroupMember?

Отправлено: 11:25, 24-10-2013 | #8


Ветеран


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

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


Используйте Remove-ADGroupMember:

$user = Get-ADUser -Filter {DisplayName -eq $userName -and Title -eq $jobTitle}
"gr1","gr2" | Foreach {Remove-ADGroupMember -Identity $_ -Members $user -Confirm:$false}

Отправлено: 12:01, 24-10-2013 | #9


Старожил


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

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


Если я правильно понимаю, то gr1 и gr2 - это названия групп, из которых надо удалить пользователя. Но в моём варианте это не очень подходит, т.к. у одного пользователя может быть 2 группы, в которых он состоит, у другого 6 (это не предел), причём 4-5 из них разные, а перечислять все группы, в которые могу входить пользователи, это будет очень большой список...

Подскажите что значит
Цитата Kazun:
$_ -Members »

Отправлено: 12:35, 24-10-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Создание пользователя AD garbals Скриптовые языки администрирования Windows 7 22-11-2013 13:12
Поиск принтеров через AD (проблема) -KeyMaster- Microsoft Windows NT/2000/2003 12 29-06-2012 11:41
PowerShell - Поиск в определенной группе конкретного пользователя ejik_off Скриптовые языки администрирования Windows 1 26-12-2011 10:15
PowerShell - [решено] Создания пользователя в AD ejik_off Скриптовые языки администрирования Windows 7 09-12-2011 07:20
Права пользователя без AD goshargh Microsoft Windows 2000/XP 6 02-08-2006 10:28




 
Переход