使用 Python 的 wmi 模块删除网络打印机?

Posted

技术标签:

【中文标题】使用 Python 的 wmi 模块删除网络打印机?【英文标题】:Remove a network printer with Python's wmi module? 【发布时间】:2013-07-09 03:34:55 【问题描述】:

对于初学者,here's the WMI module I'm referring to。

我尝试了很多代码组合,并了解如何从命令行中使用 wmic 删除网络打印机,以及基本了解如何在 VB 中使用 wmi 删除网络打印机等,但我仍然可以'不知道如何在这个 python 模块中这样做。

有人有这方面的经验吗?我在 Eclipse 中使用 PyDev 进行测试,通常在 Windows 7 机器上(该程序将与 XP 一起使用),但也在 Windows 8 上。

这是我尝试过的一些代码:

import wmi
c = wmi.WMI ()

c.win32_printer("\\\\server\\printer").delete

我收到以下错误:

wmi.x_wmi_invalid_query: <x_wmi: Unexpected COM Error (-2147217385, 'OLE error 0x80041017', None, None)>

【问题讨论】:

尝试像c.win32_printer("\\\\server\\printer").Delete_这样使用Delete_方法 @RRUZ 完全一样的错误。 你能使用c.win32_printer("\\\\server\\printer").DEVICEID这个语法访问打印机实例的属性吗?我问是因为我熟悉 WMI,但不是为什么这个 python 模块。 @RRUZ 不,我不能。但是,以下代码确实有效:for printer in c.win32_printer():print printer.DEVICEID 这个作品for printer in c.win32_printer(): printer.Delete_? 【参考方案1】:

一位朋友(可能希望保持匿名)找到了解决方案!

for printer in c.win32_printer():
    if printer.DEVICEID == "\\\\server\\printer":
    printer.delete_()

由于某种原因,服务器名称(可能还有打印机名称)似乎区分大小写,因此请注意这一点。我猜这是因为 python 区分大小写,并且是通过 python 进行比较,而不是 WMI。

【讨论】:

很有帮助,并且也适用于其他事情(在我的例子中是 IP4 路由表)

以上是关于使用 Python 的 wmi 模块删除网络打印机?的主要内容,如果未能解决你的问题,请参考以下文章

win8.1 属性-共享:Windows无法显示此连接的属性。WMI信息可能损坏

Python用WMI模块获取windowns系统信息

利用python的wmi模块,写一段读取电脑配置信息的程序,显示wmi模块错误,可电脑里有这个模块有解决办法吗

python 模块 wmi 远程连接 windows 获取配置信息

Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

如何使用 WMI 检索物理打印机列表?