schmitty 10 Geschrieben 23. September 2008 Melden Geschrieben 23. September 2008 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
NilsK 3.046 Geschrieben 23. September 2008 Melden Geschrieben 23. September 2008 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
schmitty 10 Geschrieben 24. September 2008 Autor Melden Geschrieben 24. September 2008 Es passiert nichts. Es gibt keine Fehlermeldung wenn ich es über cscript in DOS ausführe.. komisch ist das schon
blub 115 Geschrieben 24. September 2008 Melden Geschrieben 24. September 2008 Hallo Schmitty, Probier mal deinen suchstring vorne und hinten in %-Operatoren einzurahmen. LIKE Operator (Windows) cu blub
schmitty 10 Geschrieben 24. September 2008 Autor Melden Geschrieben 24. September 2008 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
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden