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

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...