Как отфильтровать сервера

Windows Script Host (WSH), WMI, vbs скрипты и т.д. Создание и применение скриптов.

Модератор: Модераторы

Активный пользователь
Сообщения: 106
Зарегистрирован: 21 май 2004, 09:26

Сообщение Defence » 31 окт 2005, 21:51

При работе с AD есть необходимость получать список компьютеров без DC и серверов.
Т.е. фильтр вида objectClass=computer отберет всех - и компы и DC и сервера. Фильтр вида (&(objectClass=computer)(!primaryGroupID=516)) отберет всех, кроме DC.

А как еще из этого списка исключить сервера?

Активный пользователь
Сообщения: 1229
Зарегистрирован: 08 июл 2004, 06:17
Откуда: Новосибирск

Сообщение slz » 31 окт 2005, 22:11

Defence
Сам не делал, но теоретически - создать группу для серверов, включить туда все учетки серваков, определить ее GID (RID) и добавить в фильтр. Можно создать одну группу для серверов и DC.

Активный пользователь
Сообщения: 106
Зарегистрирован: 21 май 2004, 09:26

Сообщение Defence » 01 ноя 2005, 11:17

Думал я уже об этом.
Но в этом методе есть один большой минус - универсальность скрипта. Он будет работать только у меня, GID группы будет не уникальным. Т.е. в скрипт надо вставлять GID созданной мною группы.

хм...
Аватара пользователя
Сообщения: 611
Зарегистрирован: 07 апр 2004, 17:10
Откуда: ссср

Сообщение Stratofortress » 11 ноя 2005, 12:38

Код
' EnumServers.vbs
' VBScript program to enumerate all servers in the domain.
'
' ----------------------------------------------------------------------
' Copyright (c) 2002 Richard L. Mueller
' Version 1.0 - November 10, 2002
' Version 1.1 - February 19, 2003 - Standardize Hungarian notation.
' Version 1.2 - March 11, 2003 - Remove SearchScope property.
' Version 2.0 - February 9, 2004 - Find computers with server operating
'                                  systems.
'
' Program enumerates the Distinguished Name of all computer objects that
' have the string "server" in the operating System attribute.
'
' You have a royalty-free right to use, modify, reproduce, and
' distribute this script file in any way you find useful, provided that
' you agree that the copyright owner above has no warranty, obligations,
' or liability for such use.

Option Explicit

Dim objRootDSE, strDNSDomain, objConnection, objCommand, strQuery
Dim objRecordSet, strComputerDN, strOS

' Determine DNS domain name from RootDSE object.
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")

' Use ADO to search Active Directory for all computers.
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection

strQuery = "<LDAP://" & strDNSDomain _
 & ">;(objectCategory=computer);" _
 & "distinguishedName,operatingSystem;subtree"

objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False

Set objRecordSet = objCommand.Execute

' Enumerate computer objects with server operating systems.
Do Until objRecordSet.EOF
 strOS = objRecordSet.Fields("operatingSystem")
 If InStr(UCase(strOS), "SERVER") > 0 Then
   strComputerDN = objRecordSet.Fields("distinguishedName")
   Wscript.Echo strComputerDN
 End If
 objRecordSet.MoveNext
Loop

' Clean up.
objConnection.Close
Set objRootDSE = Nothing
Set objCommand = Nothing
Set objConnection = Nothing
Set objRecordSet = Nothing

Wscript.Echo "Done"
[/code]
нет времени разбираться — наймите того, кто знает.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2