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

Компьютерный форум 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

 

Ветеран


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

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


Kazun, спасибо, ясно.

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



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

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


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


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

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


Kazun, это тоже VBA? ну т.е. макрос?

Kazun,это тоже VBA? вроде Get-ADuser это ps команда..

Отправлено: 11:50, 09-02-2015 | #12


Ветеран


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

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


Цитата yuriy.nepomnyashchiy.3@fb:
Kazun, это тоже VBA? ну т.е. макрос? »
Нет, это скрипт PowerShell, работающий со внешним xls-файлом.

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


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


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

Профиль | Сайт | Отправить 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
Благодарности: 861

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


Добавить: Import-Module ActiveDirectory

Отправлено: 11:25, 16-02-2015 | #15


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


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

Профиль | Сайт | Отправить 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
Благодарности: 861

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


Get-ADuser-Filter"EmployeeID -eq '$EmployeeID' -and DisplayName -eq '$DisplayName'" -Почему команда написана слитно?

Отправлено: 11:46, 16-02-2015 | #17


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


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

Профиль | Сайт | Отправить 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
Благодарности: 861

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


В фильтре, наличие пробелов в строках, несовпадение DisplayName и EmployeeID. Можно попробовать вручную посмотреть результат поиска для проблемных пользователей.

Можно осуществлять поиск, только по EmployeeID:

Get-ADuser -Filter "EmployeeID -eq '$EmployeeID'"
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:51, 16-02-2015 | #19


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


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

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


Kazun, проблема была в том что в поле "выводимое имя" у нас принято , если человек сменил ФИО писать его старое ФИО в скобках после ФИО - ну что-то типа "Иванова Мария Ивановна (Сидорова)"

искать только по EmployeeID нет смысла т.к. часто бывают ошибки от отдела кадров) хотя тоже надо взять на заметку.

ещё один момент если, Вы знаете..

как в отключаемых пользователях применять к ним , т.е. к их почтовым ящикам отправку и получение сообщения в 1кб? ну чтоб письма отправляемые им не увеличивали их п\я в рамках этого скрипта

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



Компьютерный форум 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




 
Переход