共用方式為


WMI 工作:印表機和列印

印表機和列印的 WMI 工作會管理並取得印表機的相關數據,例如尋找或設定預設印表機。 如需其他範例,請參閱techNet ScriptCenter at https://www.microsoft.com/technet

本主題中顯示的腳本範例只會從本機計算機取得數據。 如需有關如何使用指令碼從遠端電腦取得資料的更多資訊,請參閱 如何在遠端電腦上連線至 WMI

下列程式描述如何執行腳本。

執行腳本

  1. 複製程序代碼,並將它儲存在擴展名為 .vbs 的檔案中,例如 filename.vbs。 請確定文字編輯器不會將 .txt 擴展名新增至檔案。
  2. 開啟命令提示字元視窗,並導航至您儲存檔案的目錄。
  3. 在命令提示字元中輸入 cscript filename.vbs
  4. 如果您無法存取事件記錄檔,請檢查您是否正在以提升權限的命令提示字元執行。 某些事件記錄檔,例如安全性事件記錄檔,可能會受到使用者訪問控制 (UAC) 的保護。

注意

根據預設,cscript 會在命令提示字元視窗中顯示文稿的輸出。 由於 WMI 命令稿可能會產生大量的輸出,因此您可能會想要將輸出重新導向至檔案。 在命令提示字元中輸入 cscript filename.vbs > outfile.txt,將 filename.vbs 的輸出重新導向至 outfile.txt

下表列出可用來從本機計算機取得各種數據類型的腳本範例。

如何... WMI 類別或方法
...將新的印表機連線新增至遠端電腦? 使用 Win32_Printer 類別和 AddPrinterConnection 方法。
VB
strComputer = "atl-ws-01"
Set objWMIService = GetObject( "winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2")
Set objPrinter = objWMIService.Get("Win32_Printer")
errReturn = objPrinter.AddPrinterConnection ("\\PrintServer1\ArtDepartmentPrinter")
...設定預設印表機嗎?

使用 Win32_Printer 類別和 SetDefaultPrinter 方法。

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =  objWMIService.ExecQuery ("Select * from Win32_Printer Where Name = 'ScriptedPrinter'")
For Each objPrinter in colInstalledPrinters
    objPrinter.SetDefaultPrinter()
Next
PowerShell
$printerName = "\\ServerName\ShareName"
$printer = get-wmiObject -class win32_printer -Namespace $namespace | Where-Object { $_.Name -eq $printerName }
[void]$printer.setDefaultPrinter()
...透過 WMI 取消列印作業嗎?

使用 Win32_Printer 類別和 CancelAllJobs 方法。

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =  objWMIService.ExecQuery ("Select * from Win32_Printer")
For Each objPrintJob in colPrintJobs 
    objPrintJob.CancelAllJobs
Next
PowerShell
$result = (get-wmiObject -class win32_printer -Namespace "root\cimv2").CancelAllJobs()
...判斷電腦的預設印表機嗎?

使用 Win32_Printer 類別,並檢查 Default 屬性是否 True

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =  objWMIService.ExecQuery ("Select * from Win32_Printer Where Default = True")
For Each objPrinter in colInstalledPrinters
    Wscript.Echo objPrinter.Name
Next
PowerShell
get-wmiObject -class win32_printer -Namespace "root\cimv2" | where-object { $_.Default -eq 'True' }

文稿和應用程式的 WMI 工作

WMI C++應用程式範例

TechNet ScriptCenter