Показать полную графическую версию : скрипт отключения пользователей из Exel в AD через PS
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -or DisplayName -like '*$DisplayName*'"
Для Exchange:
Configure message delivery restrictions for a mailbox
(https://technet.microsoft.com/en-us/library/bb397214(v=exchg.150).aspx)
yuriy.nepomnyashchiy.3@fb
17-02-2015, 09:31
Kazun, спасибо за ссылку, но если Вы поняли что я имел в виду, через консоль я могу установить ограничения на доставку и приём руками, а как это реализовать скриптовой командой?
я хочу отключить пользователя потом граничить ему сообщения в размере один килобайт.
в указанной ссылке общие понятия как это сделать на консоли.
и да exchange 2010 :)
Что вызывает сложность щелкнуть раз, на ссылку ниже - Configure storage quotas for a mailbox (https://technet.microsoft.com/en-us/library/aa998353(v=exchg.150).aspx)
Configure message size limits for a mailbox (https://technet.microsoft.com/en-us/library/bb124708(v=exchg.150).aspx)
yuriy.nepomnyashchiy.3@fb
17-02-2015, 10:14
Kazun, спасибо! просто не увидел, я прочту и думаю у меня буду вопросы, я ещё не спец в PS , обычно в таких примерах указываются общие положения, но как их сцепить со своим скриптом врятли напишут) если Вы не против я ещё обращусь к Вам)
Запускать скрипт в шелле EMS,немного изменив:
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -or DisplayName -like '*$DisplayName*'" | Disable-ADAccount -Confirm:$false -PassThru | Foreach {
Set-Mailbox -Identity $_.UserPrincipalName -MaxSendSize 1kb -MaxReceiveSize 1kb
}
yuriy.nepomnyashchiy.3@fb
17-02-2015, 17:27
Kazun,
вот что получилось)
#Загружаем командлеты Exchange
.'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
Import-Module ActiveDirectory
$file = "F:\test2\list.xlsx"
$ex = New-Object -ComObject Excel.Application
$wb = $ex.Workbooks.Open($file)
$wb.Worksheets.Item("Лист1").UsedRange.Rows | Foreach {
$DisplayName = $_.value2[1,1]
$EmployeeID = $_.value2[1,2]
Write-Host ('EmployeeID: ' + $EmployeeID) -ForegroundColor Green
Write-Host ('DisplayName: ' + $DisplayName) -ForegroundColor Green
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" | Disable-ADAccount -
Confirm:$false -PassThru
}
$wb.Close()
$ex.Quit()
Get-Process EXCEL | Stop-Process -Force
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($ex)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($wb)
Remove-Variable ex
Remove-Variable wb
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -or DisplayName -like '*$DisplayName*'" | Disable-ADAccount -Confirm:$false -
PassThru | Foreach {
Set-Mailbox -Identity $_.UserPrincipalName -MaxSendSize 1kb -MaxReceiveSize 1kb
}
#логирование
'пока не придумано'
вывод
PS F:\test2> F:\test2\exel.ps1
Командная консоль Exchange!
ПОДРОБНО: Подключение к ххх-хххх.хх.хх.ххх
ПОДРОБНО: Подключен к ххх-хххх.хх.хх.ххх
EmployeeID: 111111
DisplayName: Иванова Елена Игоревна
DistinguishedName : CN=Иванова Елена Игоревна,OU=хх,OU=хх,DC=ххх,DC=ххх,DC=хх
Enabled : False
Name : Иванова Елена Игоревна
ObjectClass : user
ObjectGUID : 4eaf706c-01126-4826-93fa-23b49c001323e
SamAccountName : ххххх
SID : S-1-5-21-2856554560-2831245470-2975245544-169075
UserPrincipalName : ххх@хх.хх.ххх
EmployeeID: 111112
DisplayName: Петрова Наталия Андреевна
DistinguishedName : CN=Петрова Наталия Андреевна,OU=хх,OU=хх,DC=ххх,DC=ххх,DC=хх
Enabled : False
Name : Петрова Наталия Андреевна
ObjectClass : user
ObjectGUID : 9b8a571b-4190-48a9-8de3-4e4680b76e2e
SamAccountName : ххххх
SID : S-1-5-21-285347560-2810845470-29456544-168656
UserPrincipalName : ххх@хх.хх.ххх
0
0
ПРЕДУПРЕЖДЕНИЕ: Команда выполнена успешно, но параметры 'ххх.ххх.хх/хх/хх/Петрова Наталия Андреевна' не были изменены.
отключает их нормально.
но меняет размер сообщений только у Петрова Наталия Андреевна , а в файле она последняя в списке из этих двух человек и плюс ещё
"Команда выполнена успешно, но параметры 'ххх.ххх.хх/хх/хх/Петрова Наталия Андреевна' не были изменены."
что не так :(
Вместо этого кода:
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" | Disable-ADAccount -Confirm:$false -PassThru
Заменить, а не добавить или вставить:
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -or DisplayName -like '*$DisplayName*'" | Disable-ADAccount -Confirm:$false -PassThru | Foreach {
Set-Mailbox -Identity $_.UserPrincipalName -MaxSendSize 1kb -MaxReceiveSize 1kb
}
Yuriy_nepo
13-05-2015, 11:30
Kazun, Хотел Вас поблагодарить, но извините что поздно) полученные от Вас указания в работе скрипта работают! Спасибо!
но если не трудно, помогите пожалуйста ещё с двумя моментами, необходимо ставить галочку в карточке exсhange пользователя для сокрытия его из адресной книги и ещё необходимо внести в поле дискрипшн в АД комментарий, саму команду я знаю - Descripton 'комментарий' , но куда её вставить не очень понимаю в команде
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -or DisplayName -like '*$DisplayName*'" | Disable-ADAccount -Confirm:$false -PassThru | Foreach {
Set-Mailbox -Identity $_.UserPrincipalName -MaxSendSize 1kb -MaxReceiveSize 1kb
}
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -or DisplayName -like '*$DisplayName*'" | Disable-ADAccount -Confirm:$false -PassThru | Foreach {
Set-ADuser $_ -Description "Комментарий"
Set-Mailbox -Identity $_.UserPrincipalName -MaxSendSize 1kb -MaxReceiveSize 1kb -HiddenFromAddressListsEnabled $True
}
Yuriy_nepo
13-05-2015, 11:45
объясните доходчиво, что значит "$_" и вообще не очень понимаю значение знака $, если есть время
$_ (доллар и нижнее подчеркивание) — применяется для передачи значения при использовании конвейера. Специальная переменная $_ принимает текущее значение каждого объекта, переданного по конвейеру. Например следующая команда просто выводит по очереди все значения:
′one′, ′two′, ′three′ | foreach {Write-Host $_}
http://windowsnotes.ru/wp-content/uploads/2015/03/dollar7.png
apelsinchik
12-07-2017, 17:25
Привет друзья.
Нужен такой же скрипт, только имеется дополнительная колонка со статусом пользователя. (Account Status)
Нужно так... Когда пользователь находится в статусе Disabled - то отключить его в АД
Если пользователь Enabled - то не трогать его.
Нужно как бы фильтровать
Спасибо
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.