Jump to content

Löschen von Druckern mit bestimmten Namen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo liebe MCSE'ler,

 

ich habe unter ein Script welches ich selber geschrieben habe und stehe nun ein wenig auf dem Schlauch.

Ursprünglich war das Script dazu gedacht Drucker mit ihrem exatem Namen zu löschen, aber nun würde ich gerne Drucker löschen von denen ich nur einen Teil des Names eingebe..

Stimmt etwas an meinem Select Aufruf nicht oder bin ich in der Falschen Win32-Klasse.

 

 

strComputer = "MUWTS01"
strPrinterList = "printerlist.txt"
strLogFile = "DeletePrinter.log"


Set fso = CreateObject("Scripting.FileSystemObject")
set oFile = fso.OpenTextFile(strPrinterList, 1)
set oLog = fso.OpenTextFile(strLogFile, 8, True)

do while not oFile.AtEndOfStream
 strPrinterName = Trim(oFile.Readline)
 if strPrinterName <> "" then DeletePrinter(strPrinterName)
loop

oFile.Close
oLog.Close
WScript.Quit



Sub DeletePrinter(sPrntrName)

 WScript.Echo "Entferne '" & sPrntrName & "' von Computer '" & strComputer & "'..."
 oLog.Writeline "Entferne '" & sPrntrName & "' von Computer '" & strComputer & "'..."

 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

 Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where Name like '" & sPrntrName & "' ")
 For Each objPrinter in colInstalledPrinters
   objPrinter.Delete_
   WScript.Echo "Gelöscht!"
   oLog.Writeline "Gelöscht!"
   Exit Sub
 Next

End Sub

Geschrieben

Moin,

 

was passiert denn, wenn du das Skript aufrufst?

 

Ich kann es gerade nicht testen, aber ich würde mich nicht wundern, wenn WQL (SQL-Dialekt von WMI) den Operator "Like" nicht kennt. In dem Fall könntest du alle Drucker auflisten und das zurückgegebene Recordset selbst parsen. Nicht elegant, aber für die Aufgabe sicher ausreichend.

 

Gruß, Nils

Geschrieben

Sodala jetzt habe ich es gangbar bekommen

 

strComputer = "Server"
strPrinterList = "printerlist.txt"
strLogFile = "DeletePrinter.log"


Set fso = CreateObject("Scripting.FileSystemObject")
set oFile = fso.OpenTextFile(strPrinterList, 1)
set oLog = fso.OpenTextFile(strLogFile, 8, True)

do while not oFile.AtEndOfStream
 strPrinterName = Trim(oFile.Readline)
 if strPrinterName <> "" then DeletePrinter(strPrinterName)
loop

oFile.Close
oLog.Close
WScript.Quit



Sub DeletePrinter(sPrntrName)

 WScript.Echo "Entferne '" & sPrntrName & "' von Computer '" & strComputer & "'..."
 oLog.Writeline "Entferne '" & sPrntrName & "' von Computer '" & strComputer & "'..."

 Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 Set colInstalledPrinters =  objWMIService.ExecQuery ("Select * from Win32_Printer Where Name like '%%" & sPrntrName & "%%'")
 For Each objPrinter in colInstalledPrinters 
objPrinter.Delete_

 'For Each objPrinter in colInstalledPrinters
 '  objPrinter.Delete_
   WScript.Echo "Gelöscht!"
   oLog.Writeline "Gelöscht!"
 '  Exit Sub
 Next

End Sub

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...