strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where DeviceID = 'HP'")
For Each objPrinter in colPrinters
objPrinter.RenamePrinter("ArtDepartmentPrinter")
Next
指令碼一開始先連接到本機電腦的 WMI 服務。接著我們再以下面這行程式碼,擷取所有安裝在這部電腦上,名為 HP 的印表機集合:
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where DeviceID = 'HP'")
由於印表機名稱必須是專屬名稱,因此傳回的集合最多只有一個項目。我們先設定一個 For Each 迴圈,循迴執行這個集合,然後再使用下面這行程式碼,將印表機重新命名:
objPrinter.RenamePrinter("ArtDepartmentPrinter")
作法很簡單,只要呼叫 RenamePrinter 方法,代入一個參數作為印表機的新名稱即可,因為我們只是呼叫方法,並不要變更讀寫屬性的值,甚至不必使用 Put_ 方法來儲存變更。
只要一變更印表機名稱,共用名稱可能也得跟著變更。您可以先變更印表機名稱,再連接到這個「新」印表機,接著再修改 ShareName 屬性,就完成這個步驟了。請注意,即使印表機目前沒有共用,您也可以變更共用名稱。
下面就是一個經過修改的指令碼,這個指令碼先變更印表機名稱,再變更共用名稱:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where DeviceID = 'HP'")
For Each objPrinter in colPrinters
objPrinter.RenamePrinter("ArtDepartmentPrinter")
Next
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where DeviceID = 'ArtDepartmentPrinter' ")
For Each objPrinter in colPrinters
objPrinter.ShareName = "ArtDepartmentPrinter"
objPrinter.Put_
Next
如您所見,我們先變更印表機名稱,再以下面這行程式碼重新連接該印表機,不過這次就改用新名稱 ArtDepartmentPrinter:
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where DeviceID = 'ArtDepartmentPrinter' ")
我們先設定一個 For Each 迴圈,循迴執行這個印表機集合 (同樣的,該集合也只有一個項目)。在這個迴圈裡面,我們變更 ShareName 屬性的值,再呼叫 Put_ 方法來儲存變更。(我們之前暗示過了,只要您一變更讀寫屬性的值,就必須呼叫 Put_ 方法來儲存變更)。這麼一來,就賦予印表機新的名稱和共用名稱,當然還有全新的生命了。 |