ZnilTools:DisconnectNetworkPrinter.exe
Aus znilwiki
DisconnectNetworkPrinter.exe
Download: DisconnectNetworkPrinter.zip
Beschreibung:
Löscht alle verbunden Netzwerkdrucker.
Netzwerkdrucker sind in diesem Fall alle Drucker die über einen Printserver bzw. eine Freigabe verbunden sind,
also Drucker nach dem Schema
\\server\druckername
Programm starten
Aufruf für Programm
DisconnectNetworkPrinter.exe /ALL
Testmodus:
DisconnectNetworkPrinter.exe /TEST
Eingebaute Hilfe
Mit
DisconnectNetworkPrinter.exe /?
oder ohne Parameter wird die Hilfe ausgegeben
+------------------------------------------------------------------------------ | DisconnectNetworkPrinter.exe - Version 1.0.0.1 +------------------------------------------------------------------------------ | 2014 von Bernhard Linz für http://znil.net - Kontakt: Bernhard@znil.net +------------------------------------------------------------------------------ Ermittelt alle vorhandenen Netzwerkdrucker und trennt diese. Als Netzwerkdrucker zählen nur Drucker die über einen Printserver verbunden sind, also nach dem Schema \\Server\Druckername Lokal verbundene Drucker - das sind auch Netzwerkdrucker die direkt über Ihre IP angebunden sind - werden NICHT getrennt ------------------------------------------------------------------------------- Aufruf für Programm DisconnectNetworkPrinter.exe [Option] [Parameter] Mögliche Optionen sind: ----------------------- /ALL : Alle vorhandenen Netzwerkdrucker werden getrennt /TEST : Netzwerkdrucker werden nur aufgelistet, nicht getrennt +------------------------------------------------------------------------------ | DisconnectNetworkPrinter.exe ist FREEWARE! Kopieren, weitergeben ausdrücklich erlaubt! | Die jeweils aktuelleste Version und Anleitungen findet Ihr unter: | http://znil.net/index.php?title=ZnilTools:DisconnectNetworkPrinter.exe +------------------------------------------------------------------------------
Quellcode
Nicht meckern, hab ich mal eben in ein paar Minuten zusammengeschustert und dabei Code aus anderen Programmen recycelt sowie den ScriptOmatic genutzt:
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icon256-32.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_Description=Bernhard@znil.de
#AutoIt3Wrapper_Res_Fileversion=1.0.0.5
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_SaveSource=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Opt('MustDeclareVars', 1)
Dim $wbemFlagReturnImmediately = 0x10
Dim $wbemFlagForwardOnly = 0x20
Dim $colItems = ""
Dim $strComputer = "localhost"
Dim $Output
Dim $objWMIService
Dim $colItems
Dim $objNetwork
Global $oMyError
Global $g_eventerror = 0
Global $COM_Fehlermeldung = ""
; 10 20 30 40 50 60 70 80
; 12345678901234567890123456789012345678901234567890123456789012345678901234567890
Dim $Header = "+------------------------------------------------------------------------------" & @CRLF & _
"| DisconnectNetworkPrinter.exe - Version " & FileGetVersion(@ScriptName) & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
"| 2014 von Bernhard Linz für http://znil.net - Kontakt: Bernhard@znil.net" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
@CRLF
; 10 20 30 40 50 60 70 80
; 12345678901234567890123456789012345678901234567890123456789012345678901234567890
Dim $HilfeText = "Ermittelt alle vorhandenen Netzwerkdrucker und trennt diese." & @CRLF & _
"Als Netzwerkdrucker zählen nur Drucker die über einen Printserver" & @CRLF & _
"verbunden sind, also nach dem Schema \\Server\Druckername" & @CRLF & _
"Lokal verbundene Drucker - das sind auch Netzwerkdrucker die direkt" & @CRLF & _
"über Ihre IP angebunden sind - werden NICHT getrennt" & @CRLF & _
"-------------------------------------------------------------------------------" & @CRLF & _
@CRLF & _
"Aufruf für Programm" & @CRLF & _
@ScriptName & " [Option] [Parameter]" & @CRLF & _
@CRLF & _
@CRLF & _
"Mögliche Optionen sind:" & @CRLF & _
"-----------------------" & @CRLF & _
"/ALL : Alle vorhandenen Netzwerkdrucker werden getrennt" & @CRLF & _
@CRLF & _
"/TEST : Netzwerkdrucker werden nur aufgelistet, nicht getrennt" & @CRLF & _
@CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
"| DisconnectNetworkPrinter.exe ist FREEWARE! Kopieren, weitergeben ausdrücklich erlaubt!" & @CRLF & _
"| Die jeweils aktuelleste Version und Anleitungen findet Ihr unter:" & @CRLF & _
"| http://znil.net/index.php?title=ZnilTools:DisconnectNetworkPrinter.exe" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF
; ###################################################################################
; Diese Funktion ist für den Fall das es Fehler bei den Objekten gibt
; Das würde normalerweise eine AutoIt Fehler-PopUp Box erzeugen welche ich vermeiden wollte
Func MyErrFunc()
Local $err = $oMyError.number
If $err = 0 Then $err = -1
$g_eventerror = $err ; Zum Abfragen, nachdem die Funktion beendet ist
$COM_Fehlermeldung = $oMyError.windescription
EndFunc ;==>MyErrFunc
; ###################################################################################
; _ANSI2OEM löst das Problem mit dem Umlauten und anderen Sonderzeichen. Es wandelt Text so um das er korrekt in der DOS-Box dargestellt wird
; So können hier im Quellcode auch Umlaute verwendet werden (in den Textausgaben) und diese werden dann korrekt dargestellt
; Wir zudem für die Prüfung der Gruppenzugehörigkeit benötigt für Gruppen mit Umlauten, z.B. Domänen-Admins
; Dank an Xenobiologist von AutoIt.de für diese Lösung: http://www.autoit.de/index.php?page=Thread&threadID=9461&highlight=ANSI2OEM
Func _ANSI2OEM($text)
$text = DllCall('user32.dll', 'Int', 'CharToOem', 'str', $text, 'str', '')
Return $text[2]
;Return $text
EndFunc ;==>_ANSI2OEM
; ###################################################################################
; Hilfsroutine die den Hilfetext ausgibt
Func _HilfeAusgeben()
ConsoleWrite(_ANSI2OEM($Header))
ConsoleWrite(_ANSI2OEM($HilfeText))
EndFunc ;==>_HilfeAusgeben
; ###################################################################################
; H I L F E
; ###################################################################################
;testen ob wir überhaupt mit einem Parameter gestartet wurden - sonst Hilfe ausgeben
If $CmdLine[0] = 0 Then
_HilfeAusgeben()
Exit
EndIf
;testen ob der Parameter 1 ist auf "/?" testen und ebenfalls Hilfe ausgeben
If $CmdLine[1] = "/?" Then
_HilfeAusgeben()
Exit
EndIf
If $CmdLine[1] = "/TEST" Then
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") ; COM-Fehlerbehandlung initialisieren
$Output = $Output & "Computer: " & $strComputer & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
If $objItem.Network = True Then
ConsoleWrite(_ANSI2OEM($objItem.Name & ' ist ein Netzwerkdrucker') & @CRLF)
EndIf
Next
Endif
Exit 0
EndIf
If $CmdLine[1] = "/ALL" Then
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") ; COM-Fehlerbehandlung initialisieren
$Output = $Output & "Computer: " & $strComputer & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
$objNetwork = ObjCreate("WScript.Network")
If IsObj($colItems) then
For $objItem In $colItems
If $objItem.Network = True Then
ConsoleWrite(_ANSI2OEM($objItem.Name & " wird getrennt ...") & @CRLF)
$objNetwork.RemovePrinterConnection($objItem.Name)
EndIf
Next
Endif
Exit 0
EndIf
Exit 0
--Bernhard Linz 14:23, 23. Okt. 2014 (CEST)
Kommentare
Loading comments...