使用 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模块,写一段读取电脑配置信息的程序,显示wmi模块错误,可电脑里有这个模块有解决办法吗
python 模块 wmi 远程连接 windows 获取配置信息