Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
PowerShell - скрипт отключения пользователей из Exel в AD через PS

Новый участник


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

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


Добрый день, коллеги!

облазил весь интернет, и везде приводятся разные примеры отключения пользователей списком и все то не работают, то со своими параметрами не очень понятными мне.

собственно суть проста, что нужно.

1. есть список пользователей в эксель, где есть первая колонка табельный номер, он же EmployeeID и вторая колонка ФИО оно же DisplayName
2. уже смирился, что из самого экселя никто не даёт примера, чтоб отключить список пользователей именно из эксель файла, без перевода в CSV. перевожу в CSV.

удалось собрать скрипт, работает без ошибок, определяет и таб.номер и ФИО, но не отключает...есть подозрения что, чего-то не хватает..

вот собственно скрипт ниже..

Скрытый текст
cls
Import-Module ActiveDirectory

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

function disableUser ($EmployeeID, $DisplayName)
{
Write-Host ('EmployeeID: ' + $EmployeeID)
Write-Host ('DisplayName: ' + $DisplayName)

$login = (Get-ADuser -Filter {DisplayName -eq $EmployeeID -and Title -eq $DisplayName}).SamAccountName
#$Global:count = $Global:count + 1
}
function main {
foreach($User in $Users)
{
disableUser $User.EmployeeID $User.DisplayName
}
}
main
#Write-Host ('count: ' + $Global:count)



Буду благодарен за помощь.

Отправлено: 17:27, 02-02-2015

 

Ветеран


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

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


Код: Выделить весь код
Get-ADuser -Filter "EmployeeID -eq '$EmployeeID' -or DisplayName -like '*$DisplayName*'"
Для Exchange:
Configure message delivery restrictions for a mailbox

Последний раз редактировалось Kazun, 16-02-2015 в 23:39.


Отправлено: 13:18, 16-02-2015 | #21



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

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


Новый участник


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

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


Kazun, спасибо за ссылку, но если Вы поняли что я имел в виду, через консоль я могу установить ограничения на доставку и приём руками, а как это реализовать скриптовой командой?

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

в указанной ссылке общие понятия как это сделать на консоли.

и да exchange 2010

Отправлено: 09:31, 17-02-2015 | #22


Ветеран


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

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


Что вызывает сложность щелкнуть раз, на ссылку ниже - Configure storage quotas for a mailbox
Configure message size limits for a mailbox

Отправлено: 09:38, 17-02-2015 | #23


Новый участник


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

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


Kazun, спасибо! просто не увидел, я прочту и думаю у меня буду вопросы, я ещё не спец в PS , обычно в таких примерах указываются общие положения, но как их сцепить со своим скриптом врятли напишут) если Вы не против я ещё обращусь к Вам)

Отправлено: 10:14, 17-02-2015 | #24


Ветеран


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

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


Запускать скрипт в шелле 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
}

Отправлено: 10:42, 17-02-2015 | #25


Новый участник


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

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


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
ПРЕДУПРЕЖДЕНИЕ: Команда выполнена успешно, но параметры 'ххх.ххх.хх/хх/хх/Петрова Наталия Андреевна' не были изменены.




отключает их нормально.
но меняет размер сообщений только у Петрова Наталия Андреевна , а в файле она последняя в списке из этих двух человек и плюс ещё

"Команда выполнена успешно, но параметры 'ххх.ххх.хх/хх/хх/Петрова Наталия Андреевна' не были изменены."

что не так

Отправлено: 17:27, 17-02-2015 | #26


Ветеран


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

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


Вместо этого кода:
Код: Выделить весь код
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
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:43, 18-02-2015 | #27


Новый участник


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

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


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
}

Отправлено: 11:30, 13-05-2015 | #28


Ветеран


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

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


Код: Выделить весь код
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
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:33, 13-05-2015 | #29


Новый участник


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

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


объясните доходчиво, что значит "$_" и вообще не очень понимаю значение знака $, если есть время

Отправлено: 11:45, 13-05-2015 | #30



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Скрипт для добавления пользователей в AD Nord18 Скриптовые языки администрирования Windows 4 10-03-2016 15:52
PowerShell - Изменение атрибутов всех пользователей AD из exel admt Скриптовые языки администрирования Windows 3 07-03-2014 18:07
VBS/WSH/JS - HELP!. Не работает скрипт заведения пользователей в AD userovich2 Скриптовые языки администрирования Windows 3 24-10-2010 23:17
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD alex_frog Скриптовые языки администрирования Windows 6 22-07-2009 18:41
Скрипт для проверки списка пользователей и их удаление из AD alex_frog Microsoft Windows NT/2000/2003 0 22-07-2009 13:16




 
Переход