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

Показать сообщение отдельно
exo exo вне форума Автор темы

Аватара для exo

Ветеран


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

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


не поленился, без надежды пустился в перебор своих сообщений, я же помню где-то было... и нашёл.

Цитата cameron:
есть вагон скриптов менябщих дескрипшен компа
http://forum.oszone.net/post-1426214-6.html
вот пример: только я не пойму - он закончен?
читать дальше »
Цитата:
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


Цитата Iska:
за описание компьютера в сетевом окружении отвечает служба »
Iska, если вы внимательно читали, то я ни слова про "описание в сетевом окружении " не сказал.
Я имел ввиду описание в свойствах "Моего компьютера". Хотя оно и отображается в сетевом окружении. Но это уже совсем другая история.

-------
Вежливый клиент всегда прав!


Отправлено: 22:58, 28-10-2010 | #5