Verbundene Netzwerkdruckers von AD-Benutzern herausbekommen

Aufgrund einer Drucker-Migration stand ich kürzlich vor der Frage, wie wir all die verbundenen Netzwerkdrucker unserer Anwender herausbekommen könnten, um die Zugehörigkeiten anschließend in Active Directory Gruppen überführen zu können. Bis dato hatten sich die Anwender die freigegeben Drucker auch selbst verbinden können.

Um nun von jedem Benutzer die Drucker herauszubekommen, habe ich mich mittels einem VBS-Skript bedient, dass ich im TechNet-Skriptcenter gefunden hatte. Dieses band ich dann leicht modifiziert in eine Gruppenrichtlinie bzw. in eine Anmeldeskript, dass mir an eine definierte Adresse per BLAT eine TXT-Datei schickte. Die entsprechenden Daten waren dann anschließend noch zusammenzuführen. Ein wenig Quick&Dirty, aber es erfüllte seinen Zweck:

List_Connected_Printers.VBS

Const ForWriting = 2
Set objNetwork = CreateObject("Wscript.Network")
strName = objNetwork.UserName
strDomain = objNetwork.UserDomain
strUser = strDomain & "\" & strName
strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
set shell = CreateObject("WScript.Shell")

Set colPrinters = objWMIService.ExecQuery _
    ("Select * From Win32_Printer Where Local = FALSE")

strComputer2 = shell.ExpandEnvironmentStrings("%Computername%")	

For Each objPrinter in colPrinters
    strText = strText & strComputer2 & ";" & strUser & ";" & objPrinter.Name & vbCrLf
Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPath = shell.ExpandEnvironmentStrings("%Appdata%")
strFileName = "Printers_" & strName & "_" & strComputer2 & ".txt"
strFullName = objFSO.BuildPath(strPath, strFileName)

Set objFile = objFSO.CreateTextFile _ (strFullname, ForWriting, True) objFile.Write strText objFile.Close

Das Skript holt sich alle verbundenen Drucker des angemeldeten Benutzers, schreibt sie in eine Datei mit dem Muster %COMPUTERNAME%;%USERNAME%;%DRUCKER% und speichert sind als Printers_%USERNAME%_%COMPUTERNAME%.txt ab. Die Datei wird anschließend im Anwendungsdaten-Verzeichnis (%APPDATA%) abgelegt.

Das VBS-Skript wird dann mittels einer simplen Batch-Datei, die als Anmeldeskript fungiert, aufgerufen. Diese Batch-Datei enthält zudem einen BLAT-Befehl, um mir die erstellte TXT-Datei per Mail zuzuschicken:

ConPrin.cmd

REM #####################################################
REM Check all connected network printers of AD-USERS
REM 2011, https://www.tobbis-blog.de
REM #####################################################
IF EXIST "%Appdata%\Printers_%username%_%computername%.txt" goto Ende
CScript //Nologo %~dp0List_Connected_Printers.vbs
%~dp0blat -body "Connected Printers of %username% / %computername%" -server [SMTP-SERVER] -to [ZIEL-ADRESSE] -f [ABSENDER] -s "Connected Printers of %username% on %computername% (v2)" -attach "%appdata%\Printers_%username%_%computername%.txt"
:Ende

Wer neben einer solchen Skript-Lösung, einen eleganteren Weg kennt, möge bitte einen Kommentar hinterlassen, würde mich sehr interessieren.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein