#vb.net #visual-studio-2010 #active-directory
#vb.net #visual-studio-2010 #active-directory
Вопрос:
У меня есть следующий код, чтобы пользователь мог ввести свой домен до запуска программы. Результирующий текстовый файл не выводит пользователей..просто слово Schema…
ПРАВКА 1: обновлено, чтобы включить весь код. Теперь я могу запустить его, и он возвращает текстовый файл, в котором перечислены OU =_USERS OU =_GROUPS OU =_ETC И т.д. И т.п.
Sub PrintUserNames()
'Declare Command
Dim de As New DirectoryEntry()
'Nameint Place to Write file
Dim userFile As String = "C:DomainUsers.txt"
Dim fileExists As Boolean = File.Exists(userFile)
'Use Input Box for domain entry
Dim message, Title, defaultValue As String
Dim myValue As Object
message = "Enter your Domain Name"
Title = "Domain Name Entry"
defaultValue = "Enter Domain Name"
myValue = InputBox(message, Title, defaultValue)
'Get List of all users on Domain using WinNT
'Replacement Command
Dim ReplaceCommand1 As String = de.Path.Replace("***", myValue) = "WinNT://""***"""
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
Комментарии:
1. Отредактировано для отражения информации об объявлении
Ответ №1:
Вы заменяете свой заполнитель ***
перед его (повторным) назначением.
Dim ReplaceCommand1 As String = de.Path.Replace("***", myValue)
de.Path = "WinNT://***"
В зависимости от того, где вы создаете de
, вы можете просто удалить строку, содержащую de.Path = "WinNT://***"
Комментарии:
1. Теперь экспортируется текстовый файл с информацией об подразделении? Отредактировано, чтобы включить весь код (после модификации)
2. @harper Какие значения / записи объявлений вы хотите экспортировать? Подразделения, которые вы указываете в своем обновленном сообщении, относятся к обычным рекламным записям верхнего уровня. Ваш
For Each
цикл перебирает эти дочерние элементы, но нет записей на более глубоком уровне.3. Просто глядя на экспорт имен пользователей, я просто думаю, что у меня было много дел. Я вернулся к исходной точке и сделал это более простым способом.
Ответ №2:
Спасибо за совет Filburt. Я просто выбросил фактически созданную команду замены и просто использовал ее, как показано ниже.
Dim de As New DirectoryEntry()
Dim DomainName As Object
'Use Input Box for domain entry if desired
Dim messageOK, messageCan, Title, defaultValue As String
messageOK = "Enter Domain and Click OK
Title = "Domain Name Entry"
defaultValue = "Enter Domain Name"
DomainName = InputBox(messageOK, Title, defaultValue)
de.Path = "WinNT://***".Replace("***", DomainName)