完成安装后,Powershell设置默认打印机

时间:2018-08-28 09:07:37

标签: powershell printing

我已将网络打印机导出到.xml文件,因此可以将它们安装在新PC上。 另外,我已经将默认打印机导出到一个文件中,因此您可以在安装后设置默认打印机。

安装正常。问题是在脚本尝试设置默认打印机之前,尚未完成打印机的安装。

这是我安装打印机的脚本:

#Install the printer
$PrinterList = Import-Clixml H:\Backup\printers_export.xml

foreach($Printer in $PrinterList) {
  Invoke-Expression 'rundll32 printui.dll PrintUIEntry /in /q /n $($Printer.Name)'
}

# Set default printer
(New-Object -ComObject WScript.Network).SetDefaultPrinter((get-content h:\Backup\DefaultPrinter.txt))

我发现的一个解决方案是在第一次致电后加上Start-Sleep -s 15,有人可以指出我的更好解决方案吗?

2 个答案:

答案 0 :(得分:0)

添加do / while循环条件以等待默认打印机配置完成。像这样:

$DP = (New-Object -ComObject WScript.Network).SetDefaultPrinter((Get-Content H:\Backup\DefaultPrinter.txt))
do {
    Start-Sleep -Seconds 1
    [wmi]$wmi = Get-WmiObject -Query " SELECT * FROM Win32_Printer" | 
        Where { $_.Name -eq 'PUT YOUR DEFAULT PRINTER NAME HERE' -and $_.Default -eq $true}
}while(-not$wmi)

答案 1 :(得分:0)

这是现在的脚本:

还原打印机

$ PrinterList = Import-Clixml H:\ Backup \ printers_export.xml

FOREACH($ PrinterList中的$ Printer){

Invoke-Expression'rundll32 printui.dll PrintUIEntry / in / q / n $ {$ Printer.Name)'

}

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

设置默认打印机

$ DP =(新对象-ComObject WScript.Network).SetDefaultPrinter((获取内容H:\ Backup \ DefaultPrinter.txt))

做{     睡眠开始-第二个     [wmi] $ wmi = Get-WmiObject-查询“ SELECT * FROM Win32_Printer” |         其中{$ .Name -eq'$ DP'-和$ .Default -eq $ true} } while(-not $ wmi)

它不起作用。 找不到默认打印机,脚本继续运行。