|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - скрипт отключения пользователей из Exel в AD через PS |
|
PowerShell - скрипт отключения пользователей из Exel в AD через PS
|
Новый участник Сообщения: 12 |
Добрый день, коллеги!
облазил весь интернет, и везде приводятся разные примеры отключения пользователей списком и все то не работают, то со своими параметрами не очень понятными мне. собственно суть проста, что нужно. 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 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kazun, спасибо, ясно.
|
Отправлено: 18:43, 04-02-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Kazun, это тоже VBA? ну т.е. макрос?
Kazun,это тоже VBA? вроде Get-ADuser это ps команда.. |
Отправлено: 11:50, 09-02-2015 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата yuriy.nepomnyashchiy.3@fb:
|
|
Отправлено: 18:38, 09-02-2015 | #13 |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Kazun, простите за долгое отсутствие, но вот что выдаёт скрипт, запускается в PS
Скрытый текст
EmployeeID: EmployeeID
DisplayName: DisplayName Имя "Get-ADuser" не распознано как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повт орите попытку. F:\test2\exel.ps1:11 знак:12 + Get-ADuser <<<< -Filter "EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" | Disable-ADAccount -Confirm: $false -PassThru + CategoryInfo : ObjectNotFound: (Get-ADuser:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException EmployeeID: 111111 "тут естественно правильный таб №" DisplayName: фио "тут естественно правильная ФИО" Имя "Get-ADuser" не распознано как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повт орите попытку. F:\test2\exel.ps1:11 знак:12 + Get-ADuser <<<< -Filter "EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" | Disable-ADAccount -Confirm: $false -PassThru + CategoryInfo : ObjectNotFound: (Get-ADuser:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException EmployeeID: 111112 "тут естественно правильный таб №" DisplayName: фио "тут естественно правильная ФИО" Имя "Get-ADuser" не распознано как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повт орите попытку. F:\test2\exel.ps1:11 знак:12 + Get-ADuser <<<< -Filter "EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" | Disable-ADAccount -Confirm: $false -PassThru + CategoryInfo : ObjectNotFound: (Get-ADuser:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Iska, отписался) путь к файлу так же указан верно, пробовал xls и xlsx |
Отправлено: 11:17, 16-02-2015 | #14 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Добавить: Import-Module ActiveDirectory
|
Отправлено: 11:25, 16-02-2015 | #15 |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Kazun, не помогло(
файл эксель внутри, имена естественно вымышленные, но в рабочем файлы настоящие ![]() Скрытый текст
скрипт
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 вывод PS F:\test2> F:\test2\exel.ps1 EmployeeID: EmployeeID DisplayName: DisplayName Имя "Get-ADuser-Filter"EmployeeID -eq `'$EmployeeID`' -and DisplayName -eq `'$DisplayName`'"" не распознано как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте прави льность написания имени, а также наличие и правильность пути, после чего повторите попытку. F:\test2\exel.ps1:13 знак:85 + Get-ADuser-Filter"EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" <<<< | Disable-ADAccount -Confirm:$false -PassThru + CategoryInfo : ObjectNotFound: (Get-ADuser-Filt...$DisplayName`'":String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException EmployeeID: 653844 DisplayName: Абдулазизова Анна Борисовна Имя "Get-ADuser-Filter"EmployeeID -eq `'$EmployeeID`' -and DisplayName -eq `'$DisplayName`'"" не распознано как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте прави льность написания имени, а также наличие и правильность пути, после чего повторите попытку. F:\test2\exel.ps1:13 знак:85 + Get-ADuser-Filter"EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" <<<< | Disable-ADAccount -Confirm:$false -PassThru + CategoryInfo : ObjectNotFound: (Get-ADuser-Filt...$DisplayName`'":String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException EmployeeID: 613139 DisplayName: Аксенова Ольга Сергеевна Имя "Get-ADuser-Filter"EmployeeID -eq `'$EmployeeID`' -and DisplayName -eq `'$DisplayName`'"" не распознано как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте прави льность написания имени, а также наличие и правильность пути, после чего повторите попытку. F:\test2\exel.ps1:13 знак:85 + Get-ADuser-Filter"EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" <<<< | Disable-ADAccount -Confirm:$false -PassThru + CategoryInfo : ObjectNotFound: (Get-ADuser-Filt...$DisplayName`'":String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 0 0 |
Отправлено: 11:43, 16-02-2015 | #16 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Get-ADuser-Filter"EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" -Почему команда написана слитно?
|
Отправлено: 11:46, 16-02-2015 | #17 |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Kazun, да , Вы были правы. сделал пробел, заработало, но не отключает некоторых пользователей, по ФИО и таб. номеру полное совпадение, список сначала был из двух - всё отключил, но когда список стал из 7 некоторых просто пропускал, я сделал список из тех что он пропустил и он тоже их не отключил, ошибку не выдаёт , но и не отключает, просто их как бы определяет..
таким вот образом выдаёт Скрытый текст
таким вот образом выдаёт EmployeeID: 111111 DisplayName: Иванова Наталия Андреевна EmployeeID: 111112 DisplayName: Петрова Елена Игоревна 0 0 а когда пользователя отключает то выдаёт как надо EmployeeID: 111113 DisplayName: Сидорова Анна Борисовна DistinguishedName : CN=Сидорова Анна Борисовна,OU=Users,OU=xxx,DC=xxx,DC=xxx,DC=ru Enabled : False Name : Сидорова Анна Борисовна ObjectClass : user ObjectGUID : fbf35da2-a1b9-437d-b2d0-a0318c56704a SamAccountName : xxxxx SID : S-1-5-21-2856786560-2810845470-2975245544-85912 UserPrincipalName : ххх@ххх.ххх.ru в чём может быть дело? |
Отправлено: 12:46, 16-02-2015 | #18 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать В фильтре, наличие пробелов в строках, несовпадение DisplayName и EmployeeID. Можно попробовать вручную посмотреть результат поиска для проблемных пользователей.
Можно осуществлять поиск, только по EmployeeID: Get-ADuser -Filter "EmployeeID -eq '$EmployeeID'" |
Отправлено: 12:51, 16-02-2015 | #19 |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Kazun, проблема была в том что в поле "выводимое имя" у нас принято , если человек сменил ФИО писать его старое ФИО в скобках после ФИО - ну что-то типа "Иванова Мария Ивановна (Сидорова)"
![]() искать только по EmployeeID нет смысла т.к. часто бывают ошибки от отдела кадров) хотя тоже надо взять на заметку. ещё один момент если, Вы знаете.. как в отключаемых пользователях применять к ним , т.е. к их почтовым ящикам отправку и получение сообщения в 1кб? ну чтоб письма отправляемые им не увеличивали их п\я в рамках этого скрипта |
Отправлено: 13:05, 16-02-2015 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|