【问题标题】:Searching AD for a printer using VB.net使用 VB.net 在 AD 中搜索打印机
【发布时间】:2015-02-20 12:33:09
【问题描述】:

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

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()

尝试了各种方法,但似乎没有任何效果,任何建议将不胜感激。

【问题讨论】:

    标签: vb.net search active-directory printers


    【解决方案1】:

    我不得不对我正在工作的项目做类似的事情。简而言之,我认为您可能在 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

    希望对你有所帮助。

    【讨论】:

    • +1,你好 Richard,我有一个类似的项目,我必须列出 AD 打印机并添加它们,我已经能够成功获得打印机,现在我想知道如何将打印机添加/映射到计算机上,我尝试在网上查找文章,但所有文章都谈到使用 WMI 添加网络打印机(没有特定于 AD),任何参考或指导表示赞赏跨度>
    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2013-03-16
    • 2017-11-26
    • 2012-03-28
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多