使用 VB.net 在 AD 中搜索打印机
Searching AD for a printer using VB.net
我正在使用 VB.net,尝试查询 Active Directory 以检查那里是否存在打印机。我有一个 AD 连接,但当我 运行 代码时它似乎 return 没有任何值。这是我的代码片段
Dim searchResults As New ArrayList
Dim myDirectorySearcher As New DirectorySearcher(myDirectoryEntry))
Dim targetObject as string = "printerName"
Dim searchFilter as string = "cn"
Dim strFilter = "(&(objectClass=printer)(" & searchFilter & "=" & targetObject & "))"
myDirectorySearcher.Filter = strFilter
myDirectorySearcher.CacheResults = False
For i = 0 To searchCriteria.Count - 1
myDirectorySearcher.PropertiesToLoad.Add(searchCriteria(i).ToString)
Next
Dim mySearchResult As SearchResult = myDirectorySearcher.FindOne()
尝试了各种方法,但似乎没有任何效果,任何建议将不胜感激。
我不得不在工作中的一个项目中做类似的事情。简而言之,我认为您可能在 ActiveDirectory 中搜索了错误的 objectClass
。
打印机 有时 会添加到 printQueue
下。
您的代码将类似于:
Dim searchResults As New ArrayList
Dim myDirectorySearcher As New DirectorySearcher(myDirectoryEntry))
Dim targetObject as string = "printerName"
Dim strFilter = "(&(objectClass=printQueue)(cn=" & targetObject & "))"
myDirectorySearcher.Filter = strFilter
myDirectorySearcher.CacheResults = False
For i = 0 To searchCriteria.Count - 1
myDirectorySearcher.PropertiesToLoad.Add(searchCriteria(i).ToString)
Next
Dim mySearchResult As SearchResult = myDirectorySearcher.FindOne()
还值得注意的是,有时 printerName
会将域附加到末尾,因此您的查询可能并不总是 return 您期望的结果。
例如,您的打印机名称可能是 PRINTER-RECEPTION
,但在您的域中被引用为 PRINTER-RECEPTION.MYCOMPANY.DOMAIN
。
希望对您有所帮助。
我正在使用 VB.net,尝试查询 Active Directory 以检查那里是否存在打印机。我有一个 AD 连接,但当我 运行 代码时它似乎 return 没有任何值。这是我的代码片段
Dim searchResults As New ArrayList
Dim myDirectorySearcher As New DirectorySearcher(myDirectoryEntry))
Dim targetObject as string = "printerName"
Dim searchFilter as string = "cn"
Dim strFilter = "(&(objectClass=printer)(" & searchFilter & "=" & targetObject & "))"
myDirectorySearcher.Filter = strFilter
myDirectorySearcher.CacheResults = False
For i = 0 To searchCriteria.Count - 1
myDirectorySearcher.PropertiesToLoad.Add(searchCriteria(i).ToString)
Next
Dim mySearchResult As SearchResult = myDirectorySearcher.FindOne()
尝试了各种方法,但似乎没有任何效果,任何建议将不胜感激。
我不得不在工作中的一个项目中做类似的事情。简而言之,我认为您可能在 ActiveDirectory 中搜索了错误的 objectClass
。
打印机 有时 会添加到 printQueue
下。
您的代码将类似于:
Dim searchResults As New ArrayList
Dim myDirectorySearcher As New DirectorySearcher(myDirectoryEntry))
Dim targetObject as string = "printerName"
Dim strFilter = "(&(objectClass=printQueue)(cn=" & targetObject & "))"
myDirectorySearcher.Filter = strFilter
myDirectorySearcher.CacheResults = False
For i = 0 To searchCriteria.Count - 1
myDirectorySearcher.PropertiesToLoad.Add(searchCriteria(i).ToString)
Next
Dim mySearchResult As SearchResult = myDirectorySearcher.FindOne()
还值得注意的是,有时 printerName
会将域附加到末尾,因此您的查询可能并不总是 return 您期望的结果。
例如,您的打印机名称可能是 PRINTER-RECEPTION
,但在您的域中被引用为 PRINTER-RECEPTION.MYCOMPANY.DOMAIN
。
希望对您有所帮助。