Printing 映射前删除本地打印机

Printing 映射前删除本地打印机,printing,vbscript,Printing,Vbscript,我有以下基于广告分组映射打印机的脚本: '--------------------------------------------------------------------------------------------- '-------------------------------MAPEAMENTO DE IMPRESSORAS------------------------------------- on error resume next 'determines the u

我有以下基于广告分组映射打印机的脚本:

'---------------------------------------------------------------------------------------------
'-------------------------------MAPEAMENTO DE IMPRESSORAS-------------------------------------

on error resume next

'determines the user who just logged on
Set objSysInfo = CreateObject("ADSystemInfo")
Set WSHNetwork = CreateObject("WScript.Network")
'As soon as we tack on LDAP:// and construct an ADsPath we then bind to the user account in
'Active Directory and report back the groups the user belongs to; this can be done simply 
'by enumerating the values in the MemberOf attribute.


strUserPath = "LDAP://" & Replace(objSysInfo.UserName, "/", "\/")
Set objUser = GetObject(strUserPath)


For Each objGroup in objUser.Groups
  strGroupName = objGroup.CN


    '---------------------------------------------------------------------------------------------
    '--------------MAPEAMENTO DE IMPRESSORA DO GRUPO UM-------------------------------------------

    'Mapeamento de impressoras por grupo definindo a impressora comom padrão para aquele grupo.
      Select Case strGroupName
         Case "GrupodoAD1"
        WshNetwork.AddWindowsPrinterConnection "\\servidor\impressora1"
        WshNetwork.SetDefaultPrinter "\\servidor\impressora1"
      End Select

    '---------------------------------------------------------------------------------------------


    '---------------------------------------------------------------------------------------------
    '--------------MAPEAMENTO DE IMPRESSORA DO GRUPO DOIS-----------------------------------------

    'Mapeamento de impressoras por grupo definindo a impressora comom padrão para aquele grupo.
      Select Case strGroupName
         Case "GrupodoAD2"
        WshNetwork.AddWindowsPrinterConnection "\\servidor\impressora2"
        WshNetwork.SetDefaultPrinter "\\servidor\impressora2"
      End Select

    '---------------------------------------------------------------------------------------------  



    '==========Adicione seções adicionais de case para cada grupo do AD que tiver.+===============

    next
现在我被要求删除用户计算机上的一些本地打印机。上面的脚本在登录时运行。但条件规定只能删除某些打印机(有些用户将计算机带回家,我们不想删除他们的家庭打印机)

有没有一种方法可以通过使用上述现有脚本来实现这一点?我如何才能做到这一点?我应该在哪里插入信息?我可以使用单个脚本删除多台打印机吗

例如,我知道我必须删除:

  • 三星SCX-6545X系列PCL 6
  • 三星SCX-6545X系列PCL 5
  • 三星SCX-6545X系列PS
如果我有类似于上面的名称,我可以使用它删除任何与名称部分匹配的打印机吗


向您的帮助致以最诚挚的问候和感谢

这是我曾经在某处找到的一个脚本,它稍作修改,可以按设备名删除打印机。请谨慎对待、理解并根据您的需要仔细调整:

On Error Resume Next

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer where DeviceID = 'HP LaserJet P1505'")

For Each objPrinter In colInstalledPrinters

    objPrinter.Delete_

Next
我认为您可以替换“SELECT”语句中的equals子句以使用“in”,这样您就可以检查所有打印机并一次性删除它们。例如:

("Select * from Win32_Printer where DeviceID In ('HP LaserJet P1505', 'Printer_2', 'Printer_3')")

不是来给你写剧本的。好吧,那是你的权利。虽然你的评论真的没有必要,但绝对有必要。您发布了一个脚本,它丝毫不试图删除打印机,实际上它所做的只是添加一些打印机。您需要帮助删除打印机向我们显示您尝试的代码,而不仅仅是一个不显示该代码的通用脚本。明白了,明白了,完全明白你的意思。但由于我能想出的唯一脚本是成批的,它不会给我的帖子添加任何有价值的东西,所以我没有把它放在这里。我只是不认为负面评论对社区有任何贡献。也许像你上次评论时那样给我这样的新手指出正确的方向会更有成效。我仍然想感谢你指出这一点。就像我说的,现在我明白你的意思了。那很好,但这只是一个视角问题。例如,我可以声称,发布一个不完整的问题,读起来像“给我代码”的问题,对社区有负面影响。诚然,我的评论有点唐突,因此我向您道歉。我倾向于在下一次错误恢复时注释掉
,直到您确定脚本按预期工作。任何用于生产的脚本都不应具有全局性。永远。@Lankymart谢谢你的建议,我会在一台测试计算机上做这件事,然后看看结果如何>@Ansgar Wiechers抱歉,我不熟悉VB。什么是全球OERN?也许其他人可以插手,看看该条款中的“in”是否有效——这不是我的专业领域。如果没有,那么你可以一个接一个地删除它们(实际上我倾向于这样做),无论如何,我已经回答了你的问题。