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



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

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

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

#Install the printer
$PrinterList = Import-Clixml H:Backupprinters_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:BackupDefaultPrinter.txt))

我找到的一个解决方案是在第一次通话后放一个Start-Sleep -s 15,谁能指出我更好的解决方案?

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

$DP = (New-Object -ComObject WScript.Network).SetDefaultPrinter((Get-Content H:BackupDefaultPrinter.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)

这是现在的脚本:

恢复打印机

$PrinterList = import-clixml h:\backup\printers_export.xml

FOREACH ($Printer in $PrinterList( {

Invoke-Expression 'rundll32 printui.dll printUIEntry/in/q/n $($Printer.Name('

}

RUNDLL32.EXE user32.dll,UpdatePerUser系统参数

设置默认打印机

$DP = (New-Object -ComObject WScript.Network(。SetDefaultPrinter((Get-Content H:\Backup\DefaultPrinter.txt((

做 { 开始-睡眠-秒 1 [wmi]$wmi = 获取-WMI 对象 -查询 " 从Win32_Printer中选择 * " | 其中 { $.名称 -eq '$DP' -和 $。默认 -eq $true} }while(-not$wmi(

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

最新更新