Тема: Vbs: AD определение пола пользователя для создание списка рассылки
Бывает нужно обычно на праздники создать список рассылки, да еще чтобы отдельно для мужчин или для женщин. Предлогаю сценарий для тестирования.
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set OpenFile = Fso.OpenTextFile("Список рассылки.txt",8,True,-1)
Set OpenFile1 = Fso.OpenTextFile("Те кто не попал в список.txt",8,True,-1)
' Запрос для тех кто не нужен (системные, ошибочно названные, бесполое отчество), обратный запросу для тех кто нужен
Set cServAll2 = GetObject("winmgmts:{impersonationLevel=impersonate}\\.\root\directory\ldap"). _
ExecQuery("SELECT ds_name FROM DS_user Where DS_msExchHomeServerName IS NOT NULL AND NOT (ds_name like '%чна[ ]%' OR ds_name like '%вна[ ]%' OR ds_name like '%шна[ ]%' OR ds_name like '%вич[ ]%' OR ds_name like '%мич[ ]%' OR ds_name like '%ьич[ ]%')")
' Запрос для тех кто отключен
Set cServAll = GetObject("winmgmts:{impersonationLevel=impersonate}\\.\root\cimv2"). _
ExecQuery("SELECT FullName FROM Win32_UserAccount Where Disabled = True")
' Запрос для тех кто нужен в данном примере женщины
Set cServAll1 = GetObject("winmgmts:{impersonationLevel=impersonate}\\.\root\directory\ldap"). _
ExecQuery("SELECT ds_name FROM DS_user Where DS_msExchHomeServerName IS NOT NULL AND ds_name like '%чна[ ]%' OR ds_name like '%вна[ ]%' OR ds_name like '%шна[ ]%' OR ds_name like '%ова'")
z = 0
' Цыкл для тех кто нужен
For Each Result1 In cServAll1
' Цыкл для тех кто отключен
For Each Result2 IN cServAll
' Сровниваем и находим кто не отключен
If Result1.ds_name <> Result2.FullName Then
z = 0
Else
' При совпадении выходим из первого цыкла чтобы побыстрее было
z = 1
Exit For
End If
Next
If z = 0 Then
' пишем в список ds_name включенного пользователя
OpenFile.WriteLine Result1.ds_name
End If
Next
' Цыкл для тех кто не нужен
For Each Result11 In cServAll2
' Пишем тех кто не нужен
OpenFile1.WriteLine Result11.ds_name
Next
OpenFile1.Close
OpenFile.Close
Wscript.Echo "Готово"
' Запросы
'SELECT * FROM DS_user Where DS_msExchHomeServerName IS NOT NULL AND ds_name Like '%вич[ ]%' OR ds_name like '%мич[ ]%' OR ds_name like '%ьич[ ]%'
'SELECT * FROM DS_user Where DS_msExchHomeServerName IS NOT NULL AND ds_name like '%чна[ ]%' OR ds_name like '%вна[ ]%' OR ds_name like '%шна[ ]%' OR ds_name like '%ова'По выполнению сценария нужно будет проверить файл "Те кто не попал в список.txt" для выявления тех кто по разным причинам не отфильтровался.
Сценарий гарантируте точность если пользователи в AD заводятся с отчеством и без ошибок, ну и конечно если у вас не работают одни иностранцы
.

