WinNT дает много информации.Мне нужно сузить только имена машин - PullRequest
1 голос
/ 06 июня 2011
Dim de As New System.DirectoryServices.DirectoryEntry()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        de.Path = "WinNT://*****".Replace("*****", ActiveDirectory.Domain.GetCurrentDomain.Name)
        Dim Mystream As Object
        MsgBox("Please choose the place you want the file")
        If savefileDialog1.ShowDialog() = DialogResult.OK Then Mystream = savefileDialog1.FileName

    Dim UserFile As String = savefileDialog1.FileName & ".txt"
    Dim fileExists As Boolean = File.Exists(UserFile)
    Using sw As New StreamWriter(File.Open(UserFile, FileMode.OpenOrCreate))
        For Each d As DirectoryEntry In de.Children()
            sw.WriteLine(d.Name)

        Next
    End Using
End Sub

Я получаю большое количество записей, записанных в текстовый файл. Нижняя половина файла - это все, что мне действительно нужно. Кажется, что нижняя половина представляет собой список всех имен компьютеров в домене, а первая половина заполнена именами или принтерами, а также другими именами, в которые я не могу «нажать» \.

Я не могу понять, что будет сокращать этот список пользователей, и дать мне только имена машин.

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Вы можете найти что-то здесь ... посмотрите "Перечислить объекты в OU"

Public Function EnumerateOU(OuDn As String) As ArrayList
    Dim alObjects As New ArrayList()
    Try
        Dim directoryObject As New DirectoryEntry("LDAP://" + OuDn)
        For Each child As DirectoryEntry In directoryObject.Children
            Dim childPath As String = child.Path.ToString()
            alObjects.Add(childPath.Remove(0, 7))
            'remove the LDAP prefix from the path

            child.Close()
            child.Dispose()
        Next
        directoryObject.Close()
        directoryObject.Dispose()
    Catch e As DirectoryServicesCOMException
        Console.WriteLine("An Error Occurred: " + e.Message.ToString())
    End Try
    Return alObjects
End Function
1 голос
/ 06 июня 2011

Я не уверен, есть ли большая разница в наших установках активного каталога, но я запустил следующий код в консольном приложении, и он только выводит имена AD (как и ожидалось):

Module Module1

    Sub Main()
        Using de As New System.DirectoryServices.DirectoryEntry
            de.Path = "WinNT://*****".Replace("*****", System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain.Name)
            For Each d As System.DirectoryServices.DirectoryEntry In de.Children()
                If d.SchemaEntry.Name = "User" Then
                    Console.WriteLine(d.Name)
                End If
            Next
            Console.ReadKey()
        End Using
    End Sub

End Module

EDIT:

Изменение кода только для элементов вывода с типом схемы "Пользователь"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...