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

时间:2018-09-25 08:50:31

标签: vba powershell

我可以使用以下方法将其与批处理文件一起使用:

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 个答案:

答案 0 :(得分:2)

如果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可以使用1000倍的管理员/信息。

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

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

object.AddWindowsPrinterConnection strPrinterPath

对象

WshNetwork对象。

strPrinterPath

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

示例

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

Set WshNetwork = CreateObject("WScript.Network")
PrinterPath = "\\printserv\DefaultPrinter"
WshNetwork.AddWindowsPrinterConnection PrinterPath

答案 1 :(得分:0)

尝试一下:

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")