Freigabenamen und Ports der installierten Drucker per batch auslesen
Hallo zusammen!
Ich möchte zwecks Inventarisierung auf meinem Printserver (win2003r2) die installierten Drucker auf folgende Werte hin auslesen: Name, Freigabename und Anschluss.
nach langer Suche und Probieren bin ich bis hier her gekommen:
Unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers finden sich alle gewünschten Informationen.
Mit:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Share Name" >> C:\drucker1.txt
kann ich die Freigabenamen, mit:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name" >> C:\drucker2.txt
den Namen, mit
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Port" >> C:\drucker3.txt
den Anschluss in die jeweilige Datei schreiben.
Ich möchte aber mehrere Werte eines Schlüssels gleichzeitig auslesen und in EINE Datei schreiben
installierte Drucker auslesen hat mir nicht mehr weiter geholfen, genauso habe ich die Hilfe zu "reg query" erschöpft.
Ich bin daher über über Eure Hilfe dankbar.
Viele Grüße
tillixx
Ich möchte zwecks Inventarisierung auf meinem Printserver (win2003r2) die installierten Drucker auf folgende Werte hin auslesen: Name, Freigabename und Anschluss.
nach langer Suche und Probieren bin ich bis hier her gekommen:
Unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers finden sich alle gewünschten Informationen.
Mit:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Share Name" >> C:\drucker1.txt
kann ich die Freigabenamen, mit:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name" >> C:\drucker2.txt
den Namen, mit
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Port" >> C:\drucker3.txt
den Anschluss in die jeweilige Datei schreiben.
Ich möchte aber mehrere Werte eines Schlüssels gleichzeitig auslesen und in EINE Datei schreiben
installierte Drucker auslesen hat mir nicht mehr weiter geholfen, genauso habe ich die Hilfe zu "reg query" erschöpft.
Ich bin daher über über Eure Hilfe dankbar.
Viele Grüße
tillixx
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161417
Url: https://administrator.de/contentid/161417
Ausgedruckt am: 21.11.2024 um 17:11 Uhr
22 Kommentare
Neuester Kommentar
das müsste dann in etwa so gehen:
Gruß Phil
@echo off&setlocal
set "Datei=C:\Drucker.txt"
(
for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name"^|findstr "\\"') do @for /f "tokens=3*" %%j in ('reg query "%%i" /v "Share Name"^|findstr /v "\\"') do @for /f "tokens=2*" %%l in ('reg query "%%i" /v "Port"^|findstr /v "\\"') do @echo %%~ni [%%k] [%%m]
)>"%Datei%"
Gruß Phil
Hallo tillixx07,
der gute Phil hat ein wenig zu viel optimiert, das war alles. Die Ausgabe von geschachtelten FOR-Schleifen mit einem Rutsch in eine Datei umleiten (Zeile 5) funktioniert aus irgendwelchen Gründen nicht (Grüße an den Praktikanten, der die CMD-Shell programmiert hat ). Nimm folgende Abwandlung des Codes:
Gruß
Friemler
der gute Phil hat ein wenig zu viel optimiert, das war alles. Die Ausgabe von geschachtelten FOR-Schleifen mit einem Rutsch in eine Datei umleiten (Zeile 5) funktioniert aus irgendwelchen Gründen nicht (Grüße an den Praktikanten, der die CMD-Shell programmiert hat ). Nimm folgende Abwandlung des Codes:
@echo off
setlocal
set "Datei=C:\Drucker.txt"
type NUL > "%Datei%"
for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name" ^| findstr "\\"') do (
for /f "tokens=3*" %%j in ('reg query "%%i" /v "Share Name" ^| findstr /v "\\"') do (
for /f "tokens=2*" %%l in ('reg query "%%i" /v "Port" ^| findstr /v "\\"') do (
>>"%Datei%" echo %%~ni [%%k] [%%m]
)
)
)
Gruß
Friemler
moin Friemler,
das ist ja Verwunderlich ich hatte erst die kommplette forschleife im cmd Fenster mit korrekter Ausgabe gehabt und dann in die Batch Übertragen.
Bei mir hatte die Batch dann aber die Ausgabe auch ins File eingetragen.
solche Eigenheiten - das es mal hier funtioniert und woanders nicht ist ja auch komisch.
Gruß Phil
das ist ja Verwunderlich ich hatte erst die kommplette forschleife im cmd Fenster mit korrekter Ausgabe gehabt und dann in die Batch Übertragen.
Bei mir hatte die Batch dann aber die Ausgabe auch ins File eingetragen.
solche Eigenheiten - das es mal hier funtioniert und woanders nicht ist ja auch komisch.
Gruß Phil
Hi Phil,
vielleicht liegt es ja an der Betriebssystemversion, da gibt es schon kleine Unterschiede zwischen CMD unter XP und Windows 7. Ich benutze Windows 7 Ultimate N 32Bit mit frisch installiertem SP1.
[EDIT]
Es liegt nicht an der Betriebssystemversion, sondern am unterschiedlichen Verhalten von CMD bei Ausführung eines Befehls von der Kommandozeile oder aus einem Batchfile heraus.
[/EDIT]
Gruß
Friemler
vielleicht liegt es ja an der Betriebssystemversion, da gibt es schon kleine Unterschiede zwischen CMD unter XP und Windows 7. Ich benutze Windows 7 Ultimate N 32Bit mit frisch installiertem SP1.
[EDIT]
Es liegt nicht an der Betriebssystemversion, sondern am unterschiedlichen Verhalten von CMD bei Ausführung eines Befehls von der Kommandozeile oder aus einem Batchfile heraus.
[/EDIT]
Gruß
Friemler
naja ich benutze auch ein Win 7 Ultimate 32 Bit - mit allen derzeit zur Verfügung stehenden Patches.
Also immer Up to Date.
Wofür steht denn das "N"? (Nicht für alles geeignet oder Eingeschränkte Funtionstüchtigkeit)
obwohl ich auch manchmal beim Übermässigen Testen von Scripten oder nur so in der CMD bei Unerwarteten Ausgaben einen Neustart machen muss, damit die CMD wieder so tut wie sie soll.
Gruß Phil
Also immer Up to Date.
Wofür steht denn das "N"? (Nicht für alles geeignet oder Eingeschränkte Funtionstüchtigkeit)
obwohl ich auch manchmal beim Übermässigen Testen von Scripten oder nur so in der CMD bei Unerwarteten Ausgaben einen Neustart machen muss, damit die CMD wieder so tut wie sie soll.
Gruß Phil
moin desbo84,
sollte eigentlich etwas drin stehen...
Was bringt Dir denn das Script für eine Ausgabe in die CMD-Line, wenn Du die die Umleitung aus der Zeile 11 entfernst und nur
stattdessen stehen hast.
was gibt Dir diese Zeile in der CMD-Line abgefeuert aus?
Gruß Phil
sollte eigentlich etwas drin stehen...
Was bringt Dir denn das Script für eine Ausgabe in die CMD-Line, wenn Du die die Umleitung aus der Zeile 11 entfernst und nur
echo %%~ni;%%k;%%m;%%o;%%q;%%s
was gibt Dir diese Zeile in der CMD-Line abgefeuert aus?
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name"
Gruß Phil
moin,
Patchday ist aber erst in einer Woche ...
XP will die Schalter /v und /s im reg Befehl nicht kombinieren KA warum.
die Verschalchtelten Forschleifen werden auch durcheinandergebracht und die Reg ausgabe ist auch anders
Patch for XP and Win7 - positiv getestet
Gruß Phil
Patchday ist aber erst in einer Woche ...
XP will die Schalter /v und /s im reg Befehl nicht kombinieren KA warum.
die Verschalchtelten Forschleifen werden auch durcheinandergebracht und die Reg ausgabe ist auch anders
Patch for XP and Win7 - positiv getestet
@echo off
setlocal
set "Datei=C:\Drucker.csv"
(
for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s ^|findstr /b /c:"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" 2^>nul') do (
for /f "tokens=2*" %%j in ('reg query "%%i" /v "Name" 2^>nul ^| findstr "REG_" 2^>nul') do ( set "PNAME=%%k"
for /f "tokens=2*" %%l in ('reg query "%%i" /v "Port" 2^>nul ^| findstr "REG_" 2^>nul') do set "PPort=%%m"
for /f "tokens=3*" %%l in ('reg query "%%i" /v "Share Name" 2^>nul ^| findstr "REG_" 2^>nul') do set "PShareName=%%m"
for /f "tokens=2*" %%l in ('reg query "%%i" /v "Description" 2^>nul ^| findstr "REG_" 2^>nul') do set "PDescription=%%m"
for /f "tokens=2*" %%l in ('reg query "%%i" /v "Location" 2^>nul ^| findstr "REG_" 2^>nul') do set "PLocation=%%m"
for /f "tokens=3*" %%l in ('reg query "%%i" /v "Printer Driver" 2^>nul ^| findstr "REG_" 2^>nul') do set "PPrinterDriver=%%m"
setlocal enabledelayedexpansion
echo !PNAME!;!PPort!;!PShareName!;!PDescription!;!PLocation!;!PPrinterDriver!
>&3 echo !PNAME!;!PPort!;!PShareName!;!PDescription!;!PLocation!;!PPrinterDriver!
endlocal
) )
) 3>"%Datei%"
notepad "%Datei%"
pause
Gruß Phil