我们公司有一台打印机,它给我们带来了问题。我们尝试了几种不同的解决方案,但当用户使用这台打印机进行打印时,Windows 7 有时会显示类似以下内容:
Windows 需要从...计算机下载并安装软件驱动程序
但是 PC 已经有正确的驱动程序。我尝试根据搜索此问题时出现的解决方案更改组策略中的几个设置,但到目前为止没有任何效果。目前我认为最好的方法是让 Windows 在每次用户登录时重新安装打印机。
我希望仅当用户已将打印机设置为默认打印机时,才将其设置为默认打印机。如何在 PowerShell 中编写此脚本?
答案1
这可以通过 WMI 实现,使用Win32_打印机类。下面是使用 powershell 的示例,您也可以在 vbscript 中执行此操作。
您可以根据自己的需要调整以下脚本。示例假设驱动程序名为“TOSHIBA e-STUDIO3510cSeriesPCL6”
$driver_name = 'TOSHIBA e-STUDIO3510cSeriesPCL6'
$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"
foreach ($printer in $printers) {
$printer.Delete()
$return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus
If ($return_status -eq 0 -and $printer.Default) {
(Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault()
}
}
该脚本的作用是查询哪些打印机正在使用特定的驱动程序,并在必要时重新安装它们,同时保持默认打印机状态。