|
Компьютерный форум 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 | Цитировать Цитата yuriy.nepomnyashchiy.3@fb:
|
|
Отправлено: 17:29, 02-02-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Iska, ну не знаю как там за глаза, но то что мне нужно я вот не нашёл.
|
Отправлено: 17:36, 02-02-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать yuriy.nepomnyashchiy.3@fb, вот прямо готового именно для Вашего конкретного случая с «EmployeeID» и «DisplayName» может и не быть, разумеется.
А так есть и в Script Center, и в отдельных chm-сборниках. Берём и лепим из кирпичиков нечто наподобие такого: Скрытый текст
![]() Option Explicit Sub Sample() Const ADS_UF_ACCOUNTDISABLE = 2 Dim objRange As Range Dim objConnection As Object Dim objRecordSet As Object For Each objRange In ThisWorkbook.Worksheets.Item("Лист1").UsedRange.Rows If Not objRange.Row = 1 Then Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" With CreateObject("ADODB.Command") .ActiveConnection = objConnection .Properties("Sort on") = "cn" .CommandText = _ "<LDAP://dc=mydomain,dc=local>;" & _ "(&(objectClass=user)(objectCategory=person)(employeeID=" & objRange.Cells(1, 1).Value & ")(displayName=" & objRange.Cells(1, 2).Value & "));" & _ "userAccountControl,distinguishedName;" & _ "subtree" Set objRecordSet = .Execute End With With objRecordSet Do Until .EOF Debug.Print .Fields("distinguishedName") With GetObject("LDAP://" & .Fields("distinguishedName")) .Put "userAccountControl", .Get("userAccountControl") Or ADS_UF_ACCOUNTDISABLE .SetInfo End With .MoveNext Loop .Close End With objConnection.Close Set objConnection = Nothing End If Next End Sub |
Отправлено: 18:26, 02-02-2015 | #4 |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Iska, спасибо завтра попробую!
|
|
Отправлено: 18:34, 02-02-2015 | #5 |
Новый участник Сообщения: 12
|
Профиль | Сайт | Отправить PM | Цитировать Iska, подскажите, в данном примере не вижу пути к файлу, с которого провести отключение?
|
Отправлено: 16:51, 03-02-2015 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать yuriy.nepomnyashchiy.3@fb, а там нет пути. Процедура вставляется непосредственно в модуль «ЭтаКнига» той Рабочей книги, на первом листе («Лист1») которой содержится список из двух столбцов с заголовками. Я понял вопрос:
Цитата yuriy.nepomnyashchiy.3@fb:
|
|
Отправлено: 18:32, 03-02-2015 | #7 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $file = "С:\users.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 Yellow Write-Host ('DisplayName: ' + $DisplayName) -ForegroundColor Yellow 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 |
Отправлено: 15:11, 04-02-2015 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kazun, это:
Цитата Kazun:
|
|
Отправлено: 16:09, 04-02-2015 | #9 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Думаю, нет. Но процесс EXCEL , часто остается висеть в процессах, чтобы наверняка
![]() |
Отправлено: 16:13, 04-02-2015 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|