代码之家  ›  专栏  ›  技术社区  ›  Andreas

在VBA中使用PowerShell将打印机添加到系统?

  •  0
  • Andreas  · 技术社区  · 6 年前

    我可以使用批处理文件:

    powershell.exe "Add-printer -ConnectionName \\PS02.samba.net\HELPS006"
    

    但是如果我尝试用vba运行上面的BAT文件,它不会添加打印机:

    Shell ("c:\Fraktsedlar\HELPS006.bat")
    

    如果我直接从vba运行PowerShell,这些都不起作用:

    Shell ("powershell.exe -Command " & Chr(34) & "Add-printer -ConnectionName \\PS02.samba.net\HELPS006" & Chr(34))
    
    Shell ("powershell.exe -Command {" & Chr(34) & "Add-printer -ConnectionName \\PS02.samba.net\HELPS006" & Chr(34) & "}")
    
    Shell ("powershell.exe -Command " & Chr(34) & "{Add-printer -ConnectionName \\PS02.samba.net\HELPS006}" & Chr(34))
    

    我做错什么了?

    2 回复  |  直到 6 年前
        1
  •  2
  •   CatCat    6 年前

    如果PowerShell可以这样做,那么vba。

    从帮助

    http://download.microsoft.com/download/winscript56/Install/5.6/W982KMeXP/EN-US/scrdoc56en.exe 这包含一些系统管理库。您可以使用除根目录之外的所有Windows脚本宿主功能 wscript 对象(由脚本用于与主机通信)。管理/信息可用于 WMI https://msdn.microsoft.com/en-us/library/windows/desktop/aa393262(v=vs.85).aspx .

    WSH具有第二个添加打印机功能。看看那个。

    将基于Windows的打印机连接添加到计算机系统。

    object.AddWindowsPrinterConnection strPrinterPath
    

    对象

    WshNetwork 对象。

    纵横路径

    指示打印机连接路径的字符串值。

    例子

    以下代码使用 AddWindowsPrinterConnection 方法将网络打印机连接到Windows NT/2000计算机系统。

    Set WshNetwork = CreateObject("WScript.Network")
    PrinterPath = "\\printserv\DefaultPrinter"
    WshNetwork.AddWindowsPrinterConnection PrinterPath
    
        2
  •  0
  •   Kirill Pashkov    6 年前

    试试这个:

    Shell ("powershell.exe -Command { Add-Printer -ConnectionName \\PS02.samba.net\HELPS006 }")
    

    或者:

    Shell ("powershell.exe -Command " & Chr(34) & "& { Add-Printer -ConnectionName \\PS02.samba.net\HELPS006 }" & Chr(34))
    

    你也可以试试这个 Add-Printer 做:

    $p = Get-WmiObject -List Win32_Printer -EnableAllPrivileges
    $p.AddPrinterConnection ("\\PS02.samba.net\HELPS006")