none
轉移Printer Server RRS feed

  • 問題

  • 請問一下想要換Printer Server.(原來是 W2k , 用Share Printer 的方法做Printer Server)

     

    找到一個Microsoft Printer Migration Tools.可以export及import Server上的printer設定..

     

    但User方面不知有無方法可以自動將Printer轉去用新Server上的.

    2008年5月10日 上午 02:32

解答

  •  

    Dear combilli,

     

      若要將client端的印表機指向新Printer Server,可以透過Logon Script的方式達成.

      該Logon Script必須先移掉所有的網路印表機,接著對應新Printer Server上的印表機.

    Code Snippet

    Const NETWORK = 22

    Set objNetwork = CreateObject("WScript.Network")

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
        
    For Each objPrinter in colPrinters
        If objPrinter.Attributes And NETWORK Then
            strPrinter = objPrinter.Name
            objNetwork.RemovePrinterConnection strPrinter
        End If
    Next

     

     

      以上的Script是移除所有的網路印表機.

     

    Code Snippet

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set colPrinters = objWMIService.ExecQuery _
        ("Select * From Win32_Printer Where Local = TRUE")

    Set objNetwork = CreateObject("WScript.Network")
    objNetwork.AddWindowsPrinterConnection "\\PrintServer1\Xerox300"

    If
    colPrinters.Count = 0 Then
        objNetwork.SetDefaultPrinter "\\PrintServer1\Xerox300"
    End
    If

     

     

      以上是新增PrinterServer1上的Xerox300印表機並設為預設印表機的範例.

     

    參考:How Can I Remove All the Network Printers on a Computer?

              How Can I Add a Network Printer at Logon and, Optionally, Make That the Default Printer?

    2008年5月10日 下午 01:16

所有回覆

  •  

    Dear combilli,

     

      若要將client端的印表機指向新Printer Server,可以透過Logon Script的方式達成.

      該Logon Script必須先移掉所有的網路印表機,接著對應新Printer Server上的印表機.

    Code Snippet

    Const NETWORK = 22

    Set objNetwork = CreateObject("WScript.Network")

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
        
    For Each objPrinter in colPrinters
        If objPrinter.Attributes And NETWORK Then
            strPrinter = objPrinter.Name
            objNetwork.RemovePrinterConnection strPrinter
        End If
    Next

     

     

      以上的Script是移除所有的網路印表機.

     

    Code Snippet

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set colPrinters = objWMIService.ExecQuery _
        ("Select * From Win32_Printer Where Local = TRUE")

    Set objNetwork = CreateObject("WScript.Network")
    objNetwork.AddWindowsPrinterConnection "\\PrintServer1\Xerox300"

    If
    colPrinters.Count = 0 Then
        objNetwork.SetDefaultPrinter "\\PrintServer1\Xerox300"
    End
    If

     

     

      以上是新增PrinterServer1上的Xerox300印表機並設為預設印表機的範例.

     

    參考:How Can I Remove All the Network Printers on a Computer?

              How Can I Add a Network Printer at Logon and, Optionally, Make That the Default Printer?

    2008年5月10日 下午 01:16
  • Dear 前輩:

     

    我剛好也有同樣的問題!!

     

    我試了上面移除網路印表機的script, 發現

    若user全部都是網路印表機, 那移除OK!

    可是若user有接local印表機, 網路印表機 會移不掉, 意即沒有任何反應

     

    我這樣做是正確的嗎?

     

    2008年5月26日 上午 02:49