繁体   English   中英

使用VB.net在AD中搜索打印机

[英]Searching AD for a printer using VB.net

我正在使用VB.net,尝试查询Active Directory以检查并查看打印机是否存在。 我有一个AD连接,但是运行代码时它似乎未返回任何值。 这是我的代码片段

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会将域附加到末尾,因此您的查询可能并不总是返回您期望的结果。

例如,您的打印机名称可能是PRINTER-RECEPTION但是在您的域中使用PRINTER-RECEPTION.MYCOMPANY.DOMAIN引用。

希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM