打印机和打印的 WMI 任务管理和获取有关打印机的数据,例如查找或设置默认打印机。 有关其他示例,请通过 https://www.microsoft.com/technet 访问 TechNet ScriptCenter。
本主题中所示的脚本示例仅从本地计算机获取数据。 有关如何使用脚本从远程计算机获取数据的详细信息,请参阅连接到远程计算机上的 WMI。
以下过程介绍了如何运行脚本。
运行脚本
- 复制代码并将其保存在扩展名为 .vbs 的文件中,例如 filename.vbs。 确保文本编辑器不会向该文件添加 .txt 扩展名。
- 打开命令提示符窗口并导航到保存该文件的目录。
- 在命令提示符下键入 cscript filename.vbs。
- 如果无法访问事件日志,请进行检查以查看是否正从提升的命令提示符运行。 某些事件日志(例如安全事件日志)可能受用户访问控制 (UAC) 的保护。
注意
默认情况下,cscript 会在命令提示符窗口中显示脚本的输出。 由于 WMI 脚本可以生成大量输出,因此可能需要将输出重定向到文件。 在命令提示符下键入 cscript filename.vbs > outfile.txt 以将 filename.vbs 脚本的输出重定向到 outfile.txt。
下表列出了可用于从本地计算机获取各种类型的数据的脚本示例。
...向远程计算机添加新的打印机连接? |
使用 Win32_Printer 类和 AddPrinterConnection 方法。
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 方法。
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
|
$printerName = "\\ServerName\ShareName"
$printer = get-wmiObject -class win32_printer -Namespace $namespace | Where-Object { $_.Name -eq $printerName }
[void]$printer.setDefaultPrinter()
|
|
...使用 WMI 取消打印作业? |
使用 Win32_Printer 类和 CancelAllJobs 方法。
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
|
$result = (get-wmiObject -class win32_printer -Namespace "root\cimv2").CancelAllJobs()
|
|
...确定计算机的默认打印机? |
使用 Win32_Printer 类,并检查 Default 属性是否为 True。
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
|
get-wmiObject -class win32_printer -Namespace "root\cimv2" | where-object { $_.Default -eq 'True' }
|
|
-
脚本和应用程序的 WMI 任务
-
WMI C++ 应用程序示例
-
TechNet ScriptCenter