installierte Drucker auslesen

quba
Hallo zusammen,

ich möchte gerne in bezug auf Inventarisierung
per Netlogon Script alle installierten Drucker auf unseren
PCs Dokumentieren.
Also am besten ein Batch Skript, das die installierten Drucker
in eine Textdatei schreibt. (%COMPUTERNAME%.txt)

Wie ist das am besten zu bewerkstelligen?

Danke und Gruß
quba

Content-Key: 40726

Url: https://administrator.de/contentid/40726

Ausgedruckt am: 19.01.2022 um 12:01 Uhr

Mitglied: AndreasHoster
AndreasHoster 22.09.2006 um 17:03:34 Uhr
Goto Top
Mit dem Universalwerkzeug für alle Windows Verwaltungsaufgaben: WMI
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanch ...
und zum sehen, was man noch alles auslesen kann die Scriptomatic V2 (extrem empfehlenswert):
http://www.microsoft.com/downloads/details.aspx?familyid=09DFC342-648B- ...

Jetzt bleibt noch die Frage, wieviele Infos Du haben willst.
Wenn nur der Name, folgendes als .vbs speichern:
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Next

und mit cscript.exe ...vbs > Ausgabedatei starten.

Falls Du mehr Infos über die Drucker brauchst, die Klasse Win32_Printer hat noch mehr:
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each objItem in colItems
Wscript.Echo "Attributes: " & objItem.Attributes
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "AvailableJobSheets: " & objItem.AvailableJobSheets
Wscript.Echo "AveragePagesPerMinute: " & objItem.AveragePagesPerMinute
Wscript.Echo "Capabilities: " & objItem.Capabilities
Wscript.Echo "CapabilityDescriptions: " & objItem.CapabilityDescriptions
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "CharSetsSupported: " & objItem.CharSetsSupported
Wscript.Echo "Comment: " & objItem.Comment
Wscript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode
Wscript.Echo "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig
Wscript.Echo "CreationClassName: " & objItem.CreationClassName
Wscript.Echo "CurrentCapabilities: " & objItem.CurrentCapabilities
Wscript.Echo "CurrentCharSet: " & objItem.CurrentCharSet
Wscript.Echo "CurrentLanguage: " & objItem.CurrentLanguage
Wscript.Echo "CurrentMimeType: " & objItem.CurrentMimeType
Wscript.Echo "CurrentNaturalLanguage: " & objItem.CurrentNaturalLanguage
Wscript.Echo "CurrentPaperType: " & objItem.CurrentPaperType
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "DefaultCapabilities: " & objItem.DefaultCapabilities
Wscript.Echo "DefaultCopies: " & objItem.DefaultCopies
Wscript.Echo "DefaultLanguage: " & objItem.DefaultLanguage
Wscript.Echo "DefaultMimeType: " & objItem.DefaultMimeType
Wscript.Echo "DefaultNumberUp: " & objItem.DefaultNumberUp
Wscript.Echo "DefaultPaperType: " & objItem.DefaultPaperType
Wscript.Echo "DefaultPriority: " & objItem.DefaultPriority
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "DetectedErrorState: " & objItem.DetectedErrorState
Wscript.Echo "DeviceID: " & objItem.DeviceID
Wscript.Echo "Direct: " & objItem.Direct
Wscript.Echo "DoCompleteFirst: " & objItem.DoCompleteFirst
Wscript.Echo "DriverName: " & objItem.DriverName
Wscript.Echo "EnableBIDI: " & objItem.EnableBIDI
Wscript.Echo "EnableDevQueryPrint: " & objItem.EnableDevQueryPrint
Wscript.Echo "ErrorCleared: " & objItem.ErrorCleared
Wscript.Echo "ErrorDescription: " & objItem.ErrorDescription
Wscript.Echo "ErrorInformation: " & objItem.ErrorInformation
Wscript.Echo "ExtendedDetectedErrorState: " & objItem.ExtendedDetectedErrorState
Wscript.Echo "ExtendedPrinterStatus: " & objItem.ExtendedPrinterStatus
Wscript.Echo "Hidden: " & objItem.Hidden
Wscript.Echo "HorizontalResolution: " & objItem.HorizontalResolution
Wscript.Echo "InstallDate: " & objItem.InstallDate
Wscript.Echo "JobCountSinceLastReset: " & objItem.JobCountSinceLastReset
Wscript.Echo "KeepPrintedJobs: " & objItem.KeepPrintedJobs
Wscript.Echo "LanguagesSupported: " & objItem.LanguagesSupported
Wscript.Echo "LastErrorCode: " & objItem.LastErrorCode
Wscript.Echo "Local: " & objItem.Local
Wscript.Echo "Location: " & objItem.Location
Wscript.Echo "MarkingTechnology: " & objItem.MarkingTechnology
Wscript.Echo "MaxCopies: " & objItem.MaxCopies
Wscript.Echo "MaxNumberUp: " & objItem.MaxNumberUp
Wscript.Echo "MaxSizeSupported: " & objItem.MaxSizeSupported
Wscript.Echo "MimeTypesSupported: " & objItem.MimeTypesSupported
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "NaturalLanguagesSupported: " & objItem.NaturalLanguagesSupported
Wscript.Echo "Network: " & objItem.Network
Wscript.Echo "PaperSizesSupported: " & objItem.PaperSizesSupported
Wscript.Echo "PaperTypesAvailable: " & objItem.PaperTypesAvailable
Wscript.Echo "Parameters: " & objItem.Parameters
Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
Wscript.Echo "PortName: " & objItem.PortName
Wscript.Echo "PowerManagementCapabilities: " & objItem.PowerManagementCapabilities
Wscript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported
Wscript.Echo "PrinterPaperNames: " & objItem.PrinterPaperNames
Wscript.Echo "PrinterState: " & objItem.PrinterState
Wscript.Echo "PrinterStatus: " & objItem.PrinterStatus
Wscript.Echo "PrintJobDataType: " & objItem.PrintJobDataType
Wscript.Echo "PrintProcessor: " & objItem.PrintProcessor
Wscript.Echo "Priority: " & objItem.Priority
Wscript.Echo "Published: " & objItem.Published
Wscript.Echo "Queued: " & objItem.Queued
Wscript.Echo "RawOnly: " & objItem.RawOnly
Wscript.Echo "SeparatorFile: " & objItem.SeparatorFile
Wscript.Echo "ServerName: " & objItem.ServerName
Wscript.Echo "Shared: " & objItem.Shared
Wscript.Echo "ShareName: " & objItem.ShareName
Wscript.Echo "SpoolEnabled: " & objItem.SpoolEnabled
Wscript.Echo "StartTime: " & objItem.StartTime
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "StatusInfo: " & objItem.StatusInfo
Wscript.Echo "SystemCreationClassName: " & objItem.SystemCreationClassName
Wscript.Echo "SystemName: " & objItem.SystemName
Wscript.Echo "TimeOfLastReset: " & objItem.TimeOfLastReset
Wscript.Echo "UntilTime: " & objItem.UntilTime
Wscript.Echo "VerticalResolution: " & objItem.VerticalResolution
Wscript.Echo "WorkOffline: " & objItem.WorkOffline
Next
Mitglied: Biber
Biber 22.09.2006 um 17:30:34 Uhr
Goto Top
... wobei die flexibelste Variante für einen Batchaufruf die Verwendung des von AndreasHoster geposteten Monster-Skripts in Verbindung mit findstr wäre [Beispiel]:

Gruß
Biber
Mitglied: Manolax
Manolax 21.11.2007 um 10:48:19 Uhr
Goto Top
Kann mir jemand von euch das Skript vielleicht noch ein bisschen erweitern?
Und zwar bräuchte ich es so, das alle Drucke bei einem User ausgelesen werden.
Dann soll überprüft werden ob Drucker "Bla" auf Server "Blubb" vorhanden ist, wenn ja, dann soll Drucker "Bla" gelöscht werden und mit einem anderen Freigabenamen auf einem anderen Server wieder verbunden werden.
Wäre euch sehr dankbar wenn jemand das hinbekommt.

Grüße
Thomas
Mitglied: Manolax
Manolax 21.11.2007 um 12:07:43 Uhr
Goto Top
Habe jetzt selber schon eine Lösung gefunden.
Sogar nur mit Windows Batch.
Will euch nicht vorenthalten, vielleicht kann es ja jemand brauchen:

Mitglied: Biber
Biber 21.11.2007 um 13:12:07 Uhr
Goto Top
Moin Manolax,

danke für die Erweiterung/Ergänzung der Fragestellung und das Posten der Lösung.

Kann bestimmt jemand brauchen.

Danke und Gruß
Biber
Mitglied: Manolax
Manolax 22.11.2007 um 10:18:01 Uhr
Goto Top
Jetzt bräuchte ich doch nochmal ne Erweiterung von dem Script.

Und zwar soll das ganze jetzt mit mehr Druckern passieren.
Klar jetzt könnt ich einfach für jeden Drucker paar Zeilen nehmen, aber schöner wärs das ganze in ne Schleife zu packen.
Dann könnte man irgendwo oben die auszutauschenden Drucker definieren.

Soweit ich weiß kann man in Batch keien Arrays definieren, was das ganze doch schon etwas kniffliger macht.
Weiß jemand von euch, wie man das in etwa realisieren könnte?
Mitglied: Biber
Biber 22.11.2007 um 10:46:37 Uhr
Goto Top
Moin Manolax,

Jetzt bräuchte ich doch nochmal ne Erweiterung von dem Script.
Von dem Script wirst Du keine Erweiterung bekommen, dieses Feature ist nachweislich nicht implementiert.

Wenn Du eine Erweiterung des Scriptes wünscht, dann können wir das gerne hier entwickeln (auch durchaus in diesem Thread, passt ja hierher).

Aber dann versuche bitte etwas genauer die Anforderungen im Einzelnen zu beschreiben.

Danke
Biber
Mitglied: Manolax
Manolax 22.11.2007 um 11:30:46 Uhr
Goto Top
Na dann versuch ich doch mal die Anforderungen genau zu beschreiben.

Momentan sind bei den Benutzern verschiedene Drucker über einen Printserver verbunden.
Dieser Printserver wird "entsorgt".
Deshalb sollen alle Drucker auf einem neuen Printserver, welcher auch einen neuen Hostnamen hat, verbunden werden.
In dem Zuge werden auch die Freigabenamen aller Drucker geändert.
Das heißt alte Verbindungen löschen und neue erstellen.
Das Script von mir macht das auch erst mal, allerdings nur mit einem Drucker.
Wie schon gesagt könnte ich den Code jetzt für jeden einzelnen Drucker kopieren und nur die Druckernamen ersetzen, dann wär das Script aber ziemlich lang.
Deshalb hab ich mir gedacht, das es da doch eine schönere Lösung geben muss. Evtl. mit einer Schleife.


Im nächsten Schritt soll es dann nöch einen zweiten Printserver geben, welcher genau die gleichen Freigaben anbietet, wie der erste.
Vor dem verbinden soll dann erst mal abgefragt werden ob Printserver1 verfügbar ist.
Evtl. über nen Ping oder besser noch ob der Druckerdienst läuft.
Falls nicht, dann soll die Verbindung mit Printserver2 hergestellt werden.

Ich hoffe ich habe das erst mal so weit verständlich erklärt.

Gruß
Manolax
Heiß diskutierte Beiträge
question
Kaufempfehlung Switch für RZFenris14Vor 1 TagFrageSwitche und Hubs22 Kommentare

Hallo, ich bin auf der Suche nach zwei Switchen für ein relativ kleines aber feines Setup das in ein Rechenzentrum ausgelagert wird. Leider werde ich ...

question
USB-Datenträger vor Viren schützenrecon2021Vor 1 TagFrageWindows 1017 Kommentare

Hallo Freunde der IT, ich suche eine Software, mit der ich USB Stick oder USB Festplatten vor Viren schützen kann, falls ein Virus auf dem ...

question
Mögliches Sicherheitsrisiko erkannt - eigener Server wird abgelehnt gelöst napoleon123Vor 1 TagFrageWindows 104 Kommentare

Hallo, ich habe in meinem eigenen Netzwerk einen älteren Server. Bis vor Kurzem wurde er nur als Sicherheitsrisiko eingestuft, da: IP Adresse verwendet ein ungültiges ...

question
Windows-Updates, spez. Server, wann macht ihr das?winackerVor 1 TagFrageWindows Server6 Kommentare

Hallo, ich habe mir abgewöhnt, die monatlichen Updates auf den Servern zu machen - ich hole mir meinen Nervenkitzel lieber woanders. Aber alle 3 Monate ...

question
Windows Server 2019 Hyper-V LizenzVanGoneVor 1 TagFrageWindows Server10 Kommentare

Guten Tag zusammen, ich habe einen frisch aufgesetzten Windows Server 2019 - Hyper-V Host mit 3 VM's VM1: Windows Server 2019 (DC, AD; DHCP) VM2: ...

question
Zu lange Glasfaserkabel in Netzwerkschrank - wie organisieren?HerrITVor 23 StundenFrageNetzwerke5 Kommentare

Hallo liebe Administratoren, ich hätte eine Frage an euch Experten, für die ich - selbst nach stundenlanger Suche - keine richtige bzw. zufriedenstellende Antwort gefunden ...

question
Windows Updates - Vmware Snapshotsadrian138Vor 1 TagFrageWindows Server10 Kommentare

Hallo zusammen, Wie macht Ihr dies bei Windows Updates? Wir machen jeweils vor dem installieren der Windows Updates einen VMware Snapshot. z.b. Printserver, DC, Exchange ...

question
Ethernet über TelefonleitungNet-ZwerKVor 17 StundenFrageLAN, WAN, Wireless6 Kommentare

Moin! Ich suche einen Konverter, mit dem ich auf eine Telefonleitung (2 Draht) ein Netzwerksignal legen kann. Geht darum, dass ich beim einem Kunden einen ...