2013-11-26 64 views
0

這是我希望用一些簡單的PowerShell來解決部署問題:編程方式更新網絡打印機驅動程序

做32位的Windows XP在64位Windows 7遷移,USMT是 遷移所有網絡打印機,這是偉大的。由於驅動程序 顯然不正確,驅動程序需要手動升級(右鍵單擊打印機 - >更新驅動程序) 。

此操作是否存在WMI函數或Powershell cmdlet?我似乎無法找到任何 文檔!由於我們的USMT任務序列與 部署分開,並且在遷移的用戶環境下運行,我相信它 可以工作。如果我可以得到正確的語法,那麼在TS的末尾添加一個Powershell 腳本將是完美的。

我基本上正在尋找與右鍵單擊打印機並單擊「更新驅動程序」具有相同結果的功能。我已經在MDT論壇發佈了這個帖子,因爲我認爲這可能更合適!

我看過Win32_Printer類,但看起來並不像我所需要的。

+0

您是否嘗試過只映射打印機,看它是否會查詢正確的打印機驅動程序?這就是我們爲6000臺機器和數百臺打印機所做的所有工作...... \ –

回答

0

我怎麼理解它,做一個RC->更新驅動程序並不是真正的管理打印驅動程序的正確方法。

更新驅動程序旨在將驅動程序從版本X更新到下一個版本Y,而不是將驅動程序從Win XP驅動程序更改爲Win 7驅動程序的正確方法(即,如果XP驅動程序版本爲1.0 ,而Win 7驅動程序在1.0,則運行更新驅動程序將不會執行任何操作,因爲版本將相同)。

#1和最好的選擇是使用PowerShell刪除打印機,並重新添加它們(然後將安裝W​​indows 7驅動程序)。這樣你就可以保證他們會工作。

該腳本將是這樣的:

#Get list of all the printers on the machine 
$printers = gwmi win32_printer 

#Save default Printer 
$DefaultPrinter = $printers | where{$_.Default} | Select ShareName 

#Create a list of all the printers we want to delete (in this case I am deleting all network printers) 
$PrintersToDelete = $printers | where{$_.Network -eq $true} 

#Create a list of all the printers we want to add (in this case, all network printers I just deleted) 
$PrintersToAdd = $printers | where{$_.Network -eq $true} | Select Name 

#Delete the printers I want to delete 
$PrintersToDelete | foreach{$_.delete()} 

#Add back all printers we want to add 
$PrintersToAdd | foreach{(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection($_.Name)} 

#Get list of all the new printers on the machine 
$printers = gwmi win32_printer 

#Set the default printer 
$NewDefaultPrinter = $printers | where{$_.DeviceID -match $DefaultPrinter} 
$NewDefaultPrinter.SetDefaultPrinter() 
+0

我已經結束了在TS的末尾編寫腳本以完全刪除打印機。但我認爲你錯誤地認爲RC - > Update驅動程序是錯誤的。無論實際的版本比較如何,將該更新單擊到由服務器提供的最新驅動程序。 – mhouston100

相關問題