DirectoryServices - найти все компьютеры с Windows 7 и Windows 10 в домене - PullRequest
0 голосов
/ 25 декабря 2018

Я создаю инструмент для удаления профилей пользователей по возрасту на всех устройствах Windows 7 и Windows 10 в наших доменах.Он работает с использованием этого фильтра ((objectClass=computer)), но я хочу уточнить, чтобы получить только устройства с Windows 7 и Windows 10, потому что мой отдел управляет настольными компьютерами / ноутбуками, а не серверами.Чтобы сделать инструмент более эффективным и не пытаться подключиться к устройствам, у меня нет доступа администратора.

Итак, я попробовал этот фильтр:

mySearcher.Filter = "(&(objectClass=computer)(operatingSystemVersion=*server*))

Я думал сделать что-то подобное, если ОС не Windows Server 2012 или Windows Server 2008, а затем сделать что-то.

Я загрузил свойство operatingSystem, но не могу отобразить его.Я попробовал это в datagridview, и когда это не сработало, я просто попытался сделать Console.WriteLine, и это тоже не сработало.Я хочу проверить свою концепцию, прежде чем добавлять код для использования WMI для удаления профилей, просто отображая имя хоста и версию ОС, чтобы убедиться, что она извлекает информацию из AD, а не предоставляет мне серверы.Может кто-нибудь помочь?Вот код (я только сейчас работаю с доменом v06):

Dim mySearcher As DirectorySearcher = New DirectorySearcher(enTry)
   mySearcher.PropertiesToLoad.Add("dNSHostName")
   mySearcher.PropertiesToLoad.Add("operatingSystem")
   mySearcher.PropertiesToLoad.Add("operatingSystemVersion")
   mySearcher.Filter = "(&(objectClass=computer)(operatingSystem=*server*))" '("(objectClass=computer)")

   Dim resEnt As SearchResult
   For Each resEnt In mySearcher.FindAll()
       Select Case dMain
           Case "v06"
               Try

                   hostName = GetProperty(resEnt, "dNSHostName")
                   OSystem = GetProperty(resEnt, "operatingSystem")
                   Dim result1 As Net.NetworkInformation.PingReply = ping.Send(hostName, 1000)
                   If result1.Status = Net.NetworkInformation.IPStatus.Success Then
                       Dim row2 As String() = New String() {hostName, "N/A", OSystem}
                       dgvLocal.Rows.Add(row2)
                   Else
                       My.Computer.FileSystem.WriteAllText("C:\ExodusErrorLog.txt", hostName & " - Device is not pingable!" & vbCrLf & vbCrLf, True)
                   End If
               Catch ex As Exception
                   My.Computer.FileSystem.WriteAllText("C:\ExodusErrorLog.txt", hostName & " - " & ex.Message & vbCrLf & vbCrLf, True)
               End Try
           Case "v07.med.va.gov"
       End Select
   Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...