AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 52820
Accepted
Matt Rogish
Matt Rogish
Asked: 2009-08-12 08:26:54 +0800 CST2009-08-12 08:26:54 +0800 CST 2009-08-12 08:26:54 +0800 CST

Active Directory 环境中的桌面网络打印机管理

  • 772

现在,我们所有的网络打印机都通过单个 Windows 服务器连接。然后通过组策略将打印机部署到桌面。

然而,如果这台服务器出现故障,那么联网的打印机都会“噗嗤”一声,没有人可以打印。显然,某种基于 AD 的复制会很棒——有一个“热备用”是可以的,但没有简单的方法来重定向打印作业:除非我们将 BOTH 打印机都添加到客户端,但这很烦人“哪个我应该使用“Server1 上的主打印机”还是“Server2 上的主打印机”?”。出于这个原因,我想避免最终用户的解决方法,并希望在上游的某个地方处理它。

想法?

windows printing active-directory print-server
  • 5 5 个回答
  • 961 Views

5 个回答

  • Voted
  1. Best Answer
    Kara Marfia
    2009-08-12T08:54:48+08:002009-08-12T08:54:48+08:00

    我一直在思考这个问题,并考虑以下几点:

    • 设置仅用于打印服务的专用 VM
    • 克隆此 VM 并挂起(不要关闭)
    • 将克隆复制到备份 VM 服务器

    这涵盖了我在 VM 操作系统故障以及 VM 服务器上的硬件故障的情况下(因为我们还没有任何更复杂的东西来处理故障转移)。随着暂停的虚拟机上线,恢复将花费不到 15 秒的时间,并且可能会在我最终安装 Nagios 或类似的东西时编写脚本......

    “暖”待机,无需客户端复制。我想不出有什么大的障碍,但这给了我一个机会把理论扔在那里,看看是否有人能找到它们。

    • 4
  2. Izzy
    2009-08-12T08:32:55+08:002009-08-12T08:32:55+08:00

    集群打印服务器。

    完全和完全矫枉过正,但这是您问题的最佳实践解决方案!

    • 1
  3. Marko Carter
    2009-08-12T08:34:01+08:002009-08-12T08:34:01+08:00

    从这里:

    “我能想到三种方法。第一种(集群),我们可以以成本为由对除最大网络之外的所有网络进行折扣。

    第二种是使用 Windows Server 2003 的网络负载平衡 (NLB) 功能。Microsoft 不建议将其用于打印服务,因为您将没有共享存储,并且打印队列会丢失,如果服务器出现故障。但是,我认为对于很多人来说,如果打印服务器发生故障时发生的最糟糕的事情是某些用户不得不再次单击“文件|打印”,那并没有太大的创伤。我已经在实验室环境中对此进行了测试,它似乎对我来说工作正常。

    第三种方法是使用第二台打印服务器作为备用机器。禁用严格名称检查,如下文所述。

    在基于 Windows 2000 的计算机或基于 Windows Server 2003 的计算机上连接到 SMB 共享可能无法使用别名 http://support.microsoft.com/default.aspx?scid=kb;en-us;281308

    然后,将所有计算机指向您创建的 DNS 别名。最初,此别名指向主打印服务器。定期使用 Microsoft 的 PrintMig 实用程序备份主打印服务器并恢复到备用服务器。当主打印服务器出现故障时,将别名重新指向备用服务器。

    在最坏的情况下,用户可能不得不重新启动(或以其他方式清除他们的 DNS 缓存),但这比没有备份和计划的打印服务器故障要好得多。”

    • 1
  4. Evan Anderson
    2009-08-12T09:09:27+08:002009-08-12T09:09:27+08:00

    听起来很容易。

    • 为第二台服务器上的打印机创建队列。(使用 PrintMig 或其他任何方式来复制配置。也许可以考虑定期进行。)

    • 创建第二组 GPO 以部署在辅助服务器上排队的打印机。禁用这些 GPO 上的链接(或禁用 GPO 的用户部分)。

    • 如果发生故障,请启用“辅助”打印机部署 GPO 上的链接。

    根据您用于部署打印机的工具,您可能还需要“取消部署”故障服务器计算机上的打印机。

    如果您有大量 GPO,请考虑使用脚本集体执行启用/禁用功能。

    • 1
  5. Izzy
    2009-08-12T15:06:05+08:002009-08-12T15:06:05+08:00

    这是一个比我最后两个建议更明智的选择。

    这是我们用来将用户从打印服务器迁移到打印服务器的脚本。它还将保留他们的默认打印机选择。

    如果最坏的情况发生了,你可以从现有的登录脚本中调用这个脚本,然后让你的用户重新启动他们的机器/注销再登录。

    您当然需要首先启动并运行备份打印服务器,并且您需要确保所有打印队列都已在具有相同打印队列名称的新服务器上准备好。

    这里是:

    Option Explicit
    'On Error Resume Next'
    
    MigratePrint "\\svr-print-01.yourdomain.loc", "\\svr-print-02.yourdomain.loc"
    
    Function MigratePrint(strOldServer, strNewServer)
        Dim strComputer
        Dim strShareName
        Dim objWMIService
        Dim objPrinter
        Dim objItem
        Dim colItems
        Dim WshNetwork
        Dim objshell
    
        strComputer = "."
    
        Set WshNetwork = WScript.CreateObject("WScript.Network")
        Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
        Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
    
        For Each objItem in colItems
            If objItem.ServerName = strOldServer Then   
                If objItem.Default = "True" Then
                    strShareName = objItem.ShareName
                End If
                WshNetwork.RemovePrinterConnection objItem.ServerName & "\" & objItem.ShareName, True, True
                WshNetwork.AddWindowsPrinterConnection strNewServer & "\" &  objItem.Sharename
            End If
        Next
    
        Set objPrinter = CreateObject("WScript.Network") 
        objPrinter.SetDefaultPrinter (strNewServer & "\" & strShareName)
    End Function
    
    • 1

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve