![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск пользователя в AD |
|
PowerShell - [решено] Поиск пользователя в AD
|
Старожил Сообщения: 208 |
Доброго времени суток.
Задача написать скрипт который выключал бы учётные записи найденные по информации из .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) Цитата:
|
||
Отправлено: 10:38, 23-10-2013 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Для каждого пользователя составляйте список групп из которых его надо удалить.
$user1gr | Foreach {Remove-ADGroupMember -Identity $_ -Members $user1 -Confirm:$false} $user2gr | Foreach {Remove-ADGroupMember -Identity $_ -Members $user2 -Confirm:$false} $_ -Members: $_ - текущий элемент в конвеере, -Members -параметр командлета Remove-ADGroupMember,который указывает, какие объекты требуется удалить из группы. |
Отправлено: 13:44, 24-10-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Так в чём тогда автоматизация, на память я не знаю кто в какой группе состоит, что бы это узнать мне надо лезть в AD и смотреть, тогда проще сразу через оснастку и выключать учётку пользователя и удалять его из из всех групп в которых он состоит. Больше нет вариантов получать список групп в которых состоит пользователь и удалять его из них?
|
Отправлено: 13:56, 24-10-2013 | #12 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Вот с этого и надо было начинать, что удалять пользователя надо из всех групп.
$user = Get-ADUser -Filter {DisplayName -eq $userName -and Title -eq $jobTitle} -prop memberof $user.MemberOf | Foreach {Remove-ADGroupMember -Identity $_ -Members $user -Confirm:$false} |
Отправлено: 14:02, 24-10-2013 | #13 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать if ($groupsOfMember.MemberOf -eq $null)
{ Remove-ADGroupMember -Identity $_ -Members $group -Confirm:$false $str = "Учётная запись пользователя $login удалена из групп(ы): $groupsOfMember.MemberOf" Заменить на: if ($groupsOfMember.MemberOf) { Remove-ADGroupMember -Identity $group -Members $groupsOfMember -Confirm:$false $str = "Учётная запись пользователя $login удалена из групп(ы): $group " |
Отправлено: 10:39, 25-10-2013 | #14 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Спасибо Вам за помощь и быстрые ответы.
Ну и что бы не плодить похожие темы, может Вы знаете, как импортировать командлеты Exchange, для удалённого их вызова. Нашёл следующий вариант, как это сделать: #Импортируем командлеты Exchange $exch = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange/powershell Import-PSSession $exch function hiddenAddressList ($login) { $param = Get-Mailbox -HiddenFromAddressListsEnabled -Identity $login Write-Host ("param: " + $param) #Set-Mailbox -HiddenFromAddressListsEnabled $false -Identity $login; } |
Отправлено: 13:46, 25-10-2013 | #15 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Import-PSSession $exch -CommandName Get-Mailbox,Set-Mailbox -AllowClobber
|
Отправлено: 13:58, 25-10-2013 | #16 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать И последнее, подскажите пожалуйста, можно ли переносить учётную запись в другой OU, только по её login-у или другим атрибутам?
Нашёл вариант как это делается, но вариант с конвейером, мне не подходит Цитата:
function moveToOU($login, $pathOU) { try { Move-ADObject $login -TargetPath $pathOU $msg = "Учётная запись $login перенесена в $pathOU" $type = "OK `t moveToOU `t" writeLog $type $msg } catch { $msg = "$_" #$msg = "Учётная запись $login не перенесена" $type = "Error `t moveToOU `t" writeLog $type $msg } } |
|
Отправлено: 09:24, 28-10-2013 | #17 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать PS > get-help Move-ADObject -param identity
-Identity <ADObject> Specifies an Active Directory object by providing one of the following property values. The identifier in parenthes es is the LDAP display name for the attribute. Distinguished Name Example: CN=saradavis,OU=users,OU=asia,DC=corp,DC=contoso,DC=com GUID (objectGUID) Example: 599c3d2e-f72d-4d20-8a88-030d99495f20 Так что samaccountname не подходит, а только DN и ObjectGuid. |
Отправлено: 09:35, 28-10-2013 | #18 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Во дела...
Это получается мне вначале надо как-то вытаскивать из samaccountname DN или GUID и только потом возможно сделать перенос. |
Отправлено: 10:08, 28-10-2013 | #19 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Передавайте объект типа - Microsoft.ActiveDirectory.Management.ADUser
$login = Get-ADUser $name Move-ADObject $login -TargetPath $pathOU |
Отправлено: 10:15, 28-10-2013 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|