Добавляем в описание компьютера AD имя пользователя

Задача  нужно добавить в описание компьютера в AD имя пользователя и телефон.

Делаем GP на OU компов,   (хотя можно и на пользователей, поэкспериментируйте) с запуском такого скрипта

Файл dec.vbs

On Error Resume Next

Set objADSInfo = CreateObject(«ADSystemInfo»)
strComputerDN = objADSInfo.computerName
strUserDN = objADSInfo.UserName

Set objADSInfo = Nothing

Set objComputer = GetObject(«LDAP://» & strComputerDN)
Set objUser = GetObject(«LDAP://» & strUserDN)

strUserName = objUser.FullName
strDescription = strUserName & «: » & objUser.telephoneNumber

objComputer.Put «Description» , strDescription
objComputer.SetInfo

Еще один скрипт прописывает описания на самом компьютере.

‘==========================================================================

‘ NAME: Login.vbs

‘ AUTHOR: Max
‘ DATE : 16.04.2007

‘ COMMENT: Скрипт вешается на логон. Записывает в АД имя раб. станции пользователя,
‘ на которой тот залогинился, и прописывает полное имя в описание компа, на котором этот пользователь сидит
‘ (полезно для Ideal Administrator’a
‘==========================================================================

Dim WshNetwork, dn, UserName, strComputer, colItems, objUser
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
‘ берем имя компа и пользователя раб станции
Set WshNetwork = WScript.CreateObject («WScript.Network»)
strComputer = WshNetwork.ComputerName
UserName = WshNetwork.UserName
‘ вытаскиваем distinguishedName пользователя
Set objWMIService = GetObject(«winmgmts:\\» & strComputer & «\root\directory\LDAP»)
Set colItems = objWMIService.ExecQuery(«SELECT * FROM ads_user WHERE DS_sAMAccountName='» & UserName & «‘», «WQL», _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
FullName = objItem.DS_Name
dn = objItem.DS_distinguishedName
Next
‘ подключаемся к АД и вносим имя компа в поле userWorkstations пользователя
Set objUser = GetObject («LDAP://» & dn)
objUser.Put «physicalDeliveryOfficeName»,strComputer
objUser.SetInfo
‘Прописываем пользователя в описание локальной машины
k = 34 ‘ ASCII-код кавычек
kk = Chr(k) ‘ преобразуем в символ для корректного применения в строке
Set WshShell = WScript.CreateObject («WScript.Shell»)
Set net = WshShell.Exec («net config server /srvcomment:» & kk & FullName & kk)

И еще один скрипт я его не использовал может пригодится.

Dim rootDSE,strDomainDN,objConnection
Dim strSubContainer,objCommand,objRecordSet
Dim strMsg, arrDescription, strAccountProp, objComputer, strLoggedOnUser, strLoggedOnUserFullName
Const SPLITER = «,»
Const ADS_SCOPE_SUBTREE = 2
Const ADS_SCOPE_ONELEVEL = 3
Const ADS_UF_ACCOUNTDISABLE = 2

strSubContainer=»OU=Отделы»   ‘указываем OU в котором будем искать
Set rootDSE = GetObject(«LDAP://SERVER.domain.ru/RootDSE»)   ‘Указываем домен с которым работаем

strDomainDN = rootDSE.Get(«defaultNamingContext»)
Set objConnection = CreateObject(«ADODB.Connection»)
Set objCommand =   CreateObject(«ADODB.Command»)
objConnection.Provider = «ADsDSOObject»
objConnection.Open «Active Directory Provider»
Set objCommand.ActiveConnection = objConnection

‘Внимательно смотрим и меняем имя домена с DC=domain,DC=ru на нужное
objCommand.CommandText = «Select Name, operatingSystem, operatingSystemServicePack, Description, userAccountControl, distinguishedName from ‘LDAP://» + strSubContainer + «,DC=domain,DC=ru’ » & «where objectClass=’computer'»
objCommand.Properties(«Page Size») = 1000
objCommand.Properties(«Searchscope») = ADS_SCOPE_ONELEVEL ‘ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
If objRecordSet.RecordCount<1 Then
    WScript.Echo «No computer accounts found in «&strContainer&strDomainDN
    WScript.Quit
End If
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
‘   »Перебираем только те компы, у котрых Account установлен в Enabled
   If (objRecordSet.Fields(«userAccountControl»).Value And ADS_UF_ACCOUNTDISABLE)=0 Then
       strMsg = objRecordSet.Fields(«Name»).Value & _
       SPLITER & objRecordSet.Fields(«operatingSystem»).Value & _
       SPLITER & strAccountProp
       arrDescription = objRecordSet.Fields(«Description»).Value
       If Not IsNull (arrDescription) Then
          strMsg = strMsg & SPLITER & arrDescription(0)
       End If
       ‘WScript.Echo strMsg
       strLoggedOnUser = fnGetUserName (objRecordSet.Fields(«Name»).Value)
       strLoggedOnUserFullName = fnGetUserFullName (strLoggedOnUser)
       If (Not IsEmpty(strLoggedOnUser)) And (Not IsNull (strLoggedOnUser)) Then
         Set objComputer = GetObject(«LDAP://»&objRecordSet.Fields(«distinguishedName»).Value)
   objComputer.Put «Description» , strLoggedOnUserFullName
         objComputer.SetInfo
       End If
    End If
    objRecordSet.MoveNext
Loop
WScript.Echo «Хау! Я кончил!»

‘Функция, возвращающая имя текущего залогоненого пользователя на заданном компьютере
Function fnGetUserName (strComputer)
On Error Resume Next
Dim objWMIService, colItems, objItem
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

   Set objWMIService = GetObject(«winmgmts:\\» & strComputer & «\root\CIMV2»)
   Set colItems = objWMIService.ExecQuery(«SELECT * FROM Win32_ComputerSystem», «WQL», _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)

   For Each objItem In colItems
‘Обрезаем нужное кол-во символов с начала имени пользователя дабы привести от DOMAIN\Username к виду Username
      fnGetUserName = Mid (objItem.UserName,14,(Len(objItem.UserName)-13))

  Next
On Error GoTo 0
End Function

‘Опрашиваем AD на предмет ФИО данного юзера
Function fnGetUserFullName (strNNM)
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

‘Вместо Server подставьте имя компа к которому будите обрашаться за инфой
   Set objWMIService = GetObject(«winmgmts:\\» & «Server» & «\root\directory\LDAP»)
   Set colItems = objWMIService.ExecQuery(«SELECT * FROM ads_user WHERE DS_sAMAccountName='» +strNNM+»‘», «WQL», _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)

   For Each objItem In colItems

     ‘ WScript.Echo «DS_sAMAccountName: » & objItem.DS_sAMAccountName
     ‘ WScript.Echo «Имя юзера: » & objitem.DS_displayName
      fnGetUserFullName = objitem.DS_displayName
   Next

End Function

 

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

проверка * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.