Netzwerkdrucker löschen...

  • Hallo zusammen,

    gibt es eine Möglichkeit, verbundene Netzwerkdrucker von einem bestimmten Server via AutoIt zu löschen?
    Es handelt sich um ca. 50 Drucker, die aber nicht alle bei den Usern installiert sind.
    Das heisst, es müsste auch noch eine Abfrage erfolgen, welcher Drucker überhaupt bei den einzelnen nUsern installiert ist.

    Ich hoffe, Ihr könnt mir weiterhelfen...

    Gruß,
    Pepper

    BTW, ich bin ein absoluter NooB in Sachen AutoIt, bzw. Programmieren generell...

    Einmal editiert, zuletzt von Pepper (27. September 2006 um 08:51)

  • Hi und :willkommen:

    die installierten Drucken kannst Du mit folgendem Script herausfinden:

    Spoiler anzeigen
    [autoit]


    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Port: " & $objItem.Portname & @CRLF
    ;~ if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    ;~ $Output=""
    Next
    Msgbox(1,"WMI Output",$Output)
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Printer" )
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WMIDateStringToDate($dtmDate)

    [/autoit] [autoit][/autoit] [autoit]

    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
    EndFunc

    [/autoit]

    Für das Löschen könntest du mal das folgende Skript testen:

    Spoiler anzeigen
    [autoit]


    _removeNetworkPrinter("win2pdf")

    [/autoit] [autoit][/autoit] [autoit]

    Func _removeNetworkPrinter($Adapter)
    Dim $objNetwork, $strUNCPrinter
    $objNetwork = ObjCreate("WScript.Network")
    $strUNCPrinter = "\\localhost\"&$Adapter
    ; Section which removes the network printer
    $objNetwork.RemovePrinterConnection($strUNCPrinter,True,True)
    EndFunc

    [/autoit]


    ^^ das Skript konnte ich noch nicht testen ;)

  • Zitat

    Original von jonk
    Hi und :willkommen:

    die installierten Drucken kannst Du mit folgendem Script herausfinden:
    [...]

    Für das Löschen könntest du mal das folgende Skript testen:
    (...)

    ^^ das Skript konnte ich noch nicht testen ;)

    Das obere Skript hat gut funktioniert, im gegensatz zum Unteren.
    Muß ich dem Unteren noch irgendwas zur Verfügung stellen?

  • bekommst Du eine Fehlermeldung wenn du das zweite Skript ausführtst? Du mußt als Paramater die Freigabe angeben, also das was Du mit:

    Spoiler anzeigen
    [autoit]


    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "ShareName: " & $objItem.ShareName & @CRLF
    $Output=""
    Msgbox(0,"WMI Output",$output )
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Printer" )
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WMIDateStringToDate($dtmDate)

    [/autoit] [autoit][/autoit] [autoit]

    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
    EndFunc

    [/autoit]

    herausbekommst.


    Spoiler anzeigen
    [autoit]


    AutoIt

    [/autoit] [autoit][/autoit] [autoit]

    _removeNetworkPrinter("\\LittleServer\win2pdf")

    [/autoit] [autoit][/autoit] [autoit]

    Func _removeNetworkPrinter($strUNCPrinter)
    Dim $objNetwork, $strUNCPrinter
    $objNetwork = ObjCreate("WScript.Network")
    ; Section which removes the network printer
    $objNetwork.RemovePrinterConnection($strUNCPrinter,True,True)
    EndFunc

    [/autoit]

    leider kann ich Dir kein komplettes Skript geben, weil ich es momentan nicht testen kann.

    ich habe noch das Tool scriptomatic angehängt, damit kannst Du per Autoit & WMI informationen über einen PC abrufen.