Включить общий доступ на принтере и установить имя - PullRequest
1 голос
/ 20 мая 2011

Кто-нибудь знает сценарий, который устанавливает общий доступ на локальном принтере и устанавливает имя общего ресурса для имени самого принтера? ОС Windows Server 2008 R2 с пакетом обновления 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. Сценарий, похоже, не работает таким образом. Надеюсь, кто-нибудь сможет мне помочь.

Ответы [ 2 ]

2 голосов
/ 04 декабря 2015

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

1 голос
/ 21 мая 2011

По сути, вам просто нужно удалить кавычки вокруг True, False и objPrinter.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...