【问题标题】:Enable sharing on printer and set sharename在打印机上启用共享并设置共享名
【发布时间】:2017-08-15 15:26:43
【问题描述】:

有人知道在本地打印机上设置共享并将共享名称设置为打印机本身名称的脚本吗?操作系统是 Windows Server 2008 R2 Service Pack 1

我已经得到了这个:

strComputer = "."
Set objWMIService = GetObject( _
    "winmgmts:" & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
 If objPrinter.Shared = "False" Then
    ObjPrinter.Shared = "True"
    ObjPrinter.ShareName = "objPrinter.Name"
 End If
Next

但我不知道如何将打印机名称解析为 ObjPrinter.ShareName。我想要一个 Powershell 或 VBScript。该脚本似乎没有以这种方式工作。希望有人能够帮助我。

【问题讨论】:

    标签: windows powershell vbscript


    【解决方案1】:

    PowerShell 启用或禁用打印机上的共享 http://winplat.net/2015/12/04/powershell-to-share-and-unshared-the-printers/

    共享打印机

    Set-Printer -Name DummyPrinter -Shared $True -Published $True -ShareName MyDummyPrinter
    

    在远程计算机上共享打印机

    Set-Printer -Name DummyPrinter -Shared $True -Published $True -ShareName MyDummyPrinter -ComuterName PrintSvr01
    

    在哪里, DummyPrinter 是打印队列的名称, MyDummyPrinter 是所需的共享名称,并且 PrintSvr01 是托管打印机的远程服务器。

    请注意,参数-Publish 启用了“目录列表”选项。如果您不想要该选项,可以省略。

    多台打印机?

    get-printer -ComputerName PrintSvr01 | foreach{Set-Printer -name $_.name -Shared $true -ShareName $_.name -Published $true -ComputerName PrintSvr01}

    取消共享打印机

    要取消共享,请将 –Shared 参数设置为 $False Set-Printer -Name DummyPrinter -Shared $True -ComuterName PrintSvr01

    【讨论】:

      【解决方案2】:

      基本上,您只需删除TrueFalseobjPrinter.Name 周围的引号并使用Put_ 来保存更改。我还建议添加错误处理,因为不是每种类型的打印机都可以共享。生成的代码如下所示:

      strComputer = "."
      Set objWMIService = GetObject( _
          "winmgmts:" & "{impersonationLevel=impersonate}!\\" _
          & strComputer & "\root\cimv2")
      Set colInstalledPrinters =  objWMIService.ExecQuery _
          ("Select * from Win32_Printer")
      For Each objPrinter in colInstalledPrinters
       If objPrinter.Shared = False Then
           objPrinter.Shared = True
           objPrinter.ShareName = objPrinter.Name
      
           On Error Resume Next
           objPrinter.Put_
           msg = Err.Description
           On Error GoTo 0
           If msg <> "" Then
              MsgBox "Cannot share " & objPrinter.Name & ": " & msg
           End If
       End If
      Next
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多