VBS. Скрипт для получения пользователей с разрешенным RAS

Здесь обсуждаются вопросы по программированию на Visual Basic.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

VBS. Скрипт для получения пользователей с разрешенным RAS

Сообщение UncleFather »

VBS скрипт, выгружающий пользователей домена у которых на вкладке «Входящие звонки» включена опция «Разрешить доступ» в файл RRAS_VPN_Users.txt (Источник):

Код VBS:

Код: Выделить всё

'***************************************************
'This script will pull all users that have Dial-in
'access from Active Directory and the OU the account
'is in and writes the values out to the file RRAS_VPN_Users.txt
'***************************************************
Option Explicit

On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Dim objConnection, objCommand, objRootDSE
Dim objRecordSet, ou 
Dim namingContext, fso, outFile 
Set objConnection = CreateObject("ADODB.Connection") 
Set objCommand = CreateObject("ADODB.Command") 
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

set objRootDSE = getobject("LDAP://RootDSE")
namingContext = objRootDSE.Get("defaultNamingContext")
set objRootDSE = nothing

Set fso = CreateObject("Scripting.FileSystemObject") 
Set outFile = fso.CreateTextFile("RRAS_VPN_Users.txt", True) 
objCommand.Properties("Page Size") = 1000 
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
objCommand.CommandText = _ 
"SELECT Name FROM 'LDAP://" & namingContext & _
"' WHERE objectCategory='user' " & _
"AND msNPAllowDialin = TRUE"

Set objRecordSet = objCommand.Execute 
objRecordSet.MoveFirst 
Do Until objRecordSet.EOF
' Call function to find OU from computer name
ou = getOUByUserName(objRecordSet.Fields("Name").Value)
outFile.WriteLine(objRecordSet.Fields("Name").Value & _
",'" & ou & "'")  
objRecordSet.MoveNext 
Loop
outFile.Close

WScript.Echo "Complete"

WScript.Quit

function getOUByUserName(byval UserName)

' *** Function to find ou/container of user object *** 
DIM namingContext, ldapFilter, ou 
DIM cn, cmd, rs 
DIM objRootDSE 
set objRootDSE = getobject("LDAP://RootDSE")
namingContext = objRootDSE.Get("defaultNamingContext")
set objRootDSE = nothing

ldapFilter = "<LDAP://" & namingContext & _
">;(&(objectCategory=User)(name=" & userName & "))" & _
";distinguishedName;subtree"

set cn = createobject("ADODB.Connection") 
set cmd = createobject("ADODB.Command") 
cn.open "Provider=ADsDSOObject;"
cmd.activeconnection = cn
cmd.commandtext = ldapFilter

set rs = cmd.execute 
if rs.eof <> true and rs.bof <> true then
ou = rs(0)
ou = mid(ou,instr(ou,",")+1,len(ou)-instr(ou,","))
getOUByuserName = ou

end if 
rs.close 
cn.close 
end function 

Скачать:

RRAS_VPN_Users.rar
(2.1 КБ) 751 скачивание

Просто запускаем скрипт и получаем в той же папке файлик с именами пользователей домена, которым разрешены входящие звонки:

01.jpg

PS: аналогичная команда PowerShell, выводящая списко пользователей, которым разрешены входящие звонки:

Код: Выделить всё

Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(msNPAllowDialin=TRUE))"

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение