Listet Drucker von der Befehlszeile in die Textdatei auf

30

Gibt es einen Befehl, der über die Befehlszeile verwendet werden kann, um eine Liste der installierten Drucker und deren Speicherort (sofern zugeordnet) in einer Textdatei auszugeben? Oder vielleicht ein Programm, das ich von der Kommandozeile ausführen kann, das dies tun würde?

Der Hochstapler
quelle

Antworten:

28

In Windows XP verwenden Sie prntmngr:

PRNMNGR -l >> C:\printers.txt

Verwenden Sie in Windows Vista und höher PowerShell:

get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt

Hinweis: Abhängig von Ihren Rechten und der Art und Weise, wie PowerShell erstellt wurde, wird möglicherweise eine Fehlermeldung angezeigt, wenn Sie versuchen, die Datei in C: \ unter Vista + zu schreiben.

Für Windows 2000:

Die Datei PrnMngr.vbs von XP (im Ordner / Windows / System32) funktioniert unter Windows 2000. Suchen Sie sie und kopieren Sie sie von einem XP-Computer auf den 2000-Computer. Führen Sie sie aus mit:

cscript prnmngr.vbs -l >> c:\printers.txt

Ich stellte fest, dass es aus irgendeinem Grund nicht vom Desktop meines Benutzers aus ausgeführt werden konnte, aber als ich die .VBS-Datei in das Stammverzeichnis von C kopierte, lief es einwandfrei.

Wesley
quelle
Hat wunderbar funktioniert!
17

Ich benutze:

wmic printer list brief

ODER

wmic printer get name

Hier sehen Sie nur eine kurze Liste der Drucker, die an das System angeschlossen sind, auf dem Sie den Befehl ausführen. Außerdem wird angezeigt, an welchen Computer ein Drucker angeschlossen ist, wenn ein Netzwerkdrucker vorhanden ist.

Sie können dies auch verwenden, um eine sehr detaillierte Konfigurationsliste für jeden auf einem System installierten Drucker zu erhalten:

wmic printer list full

Um es in eine Textdatei auszugeben, hängen Sie dies an das Ende des Befehls an:

 >>"[directory]\[filename].txt"

Beispiel:

wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Matt Stoddard
quelle
1
Dies sollte die akzeptierte Antwort sein.
James Draper
4

Manchmal möchten Sie PS in win7 nicht verwenden (ich habe eine Anwendung, mit der ich Verwaltungsaufgaben im Hintergrund auf Remotecomputern ausführen kann, die jedoch keine Powershell-Funktion verwendet). Die genannten XP-Visual-Basic-Skripte finden Sie in folgendem Ordner für Win7:

C:\Windows\System32\Printing_Admin_Scripts\en-US
Andrew
quelle
1

Hinweis: Stellen Sie unter Windows XP sicher, dass Sie zuerst den Standard-Skripthost in CScript ändern

C:\CScript //H:CScript

Andernfalls erhalten Sie eine Meldung, in der Sie dazu aufgefordert werden, und Ihre Datei printers.txt ist leer.

cls
quelle
0

Das ist also meine Lösung:

;******************
;ALLOCATING CONSOLE
;******************
; cmd calls hidden

global cPid
DetectHiddenWindows, on
Run, %comspec% /k ,,Hide UseErrorLevel,cPid
WinWait, ahk_pid %cPid%,, 1
DllCall("AttachConsole","uint",cPid)
hCon:=DllCall("CreateFile","str","CONOUT$","uint",0xC0000000,"uint",7,"uint",0,"uint",3,"uint",0,"uint",0)


;******* GET PRINTER NAMES **********

AllPrintersNameClearArray := strSplit(StrReplace(StrReplace(StrReplace(StrReplace("|" StrReplace(StrReplace(StrReplace(RunWaitOne("wmic printer get name"),"  ","")," `r",""),"`r",""),"|NAME`n",""),"`n","|"),"||","",All),"|","`n"),"`n")

RunWaitOne(command) {

    objShell := ComObjCreate("WScript.Shell")
    objExec := objShell.Exec(command)
    strStdOut := ""
    while, !objExec.StdOut.AtEndOfStream
    strStdOut := objExec.StdOut.ReadAll()
    return %strStdOut%
}

; **** Clean at the end *****

Finish:
DllCall("CloseHandle", "uint", hCon)
DllCall("FreeConsole")
Process, Close, %cPid%
ExitApp
return
Rightcelebrator
quelle
0

Verwenden Sie PowerShell.

[System.Drawing.Printing.PrinterSettings]::InstalledPrinters

Stomie
quelle
Willkommen bei Super User. Können Sie noch mehr dazu sagen? Obwohl ich denke, dass dies technisch eine Antwort ist, überlässt es viel der Vorstellungskraft und ist als solche keine qualitativ hochwertige Antwort.
Ich sage Reinstate Monica