Listen Sie Drucker von der Befehlszeile in eine Textdatei auf

Gibt es einen Befehl, der über die Befehlszeile verwendet werden kann, um eine Liste der installierten Drucker und ihren Speicherort, falls dieser einer Textdatei zugeordnet ist, auszugeben? Oder vielleicht ein Programm, das ich über die Befehlszeile ausführen kann, das dies tun würde?

Author: Der Hochstapler, 2010-04-28

8 answers

In Windows XP verwenden prntmngr:

PRNMNGR -l >> C:\printers.txt

In Windows XP SP3 Vista und darüber hinaus (Sie müssen Powershell v1 manuell installieren), verwenden PowerShell:

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

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

Für Windows 2000:

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

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

Ich fand, dass es aus irgendeinem Grund nicht vom Desktop meines Benutzers ausgeführt werden würde, aber als ich das kopierte .VBS an die Wurzel von C: Es lief gut.

 28
Author: Wesley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-09-20 15:46:26

Ich benutze:

wmic printer list brief

ODER

wmic printer get name

Dies zeigt nur eine kurze Liste der Drucker, die an das System angeschlossen sind, auf dem Sie den Befehl ausführen. Es wird auch 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 abzurufen:

wmic printer list full

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

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

Beispiel:

wmic printer list brief >> c:\users\admin\documents\printerlist.txt
 19
Author: Matt Stoddard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-02-19 10:10:34

Manchmal möchten Sie PS in win7 nicht verwenden (ich habe eine Anwendung, mit der ich administrative Arbeiten im Hintergrund auf Remote-PCs ausführen kann, aber Powershell nicht). Die genannten XP Visual Basic Skripte finden Sie im folgenden Ordner für Win7:

C:\Windows\System32\Printing_Admin_Scripts\en-US
 4
Author: Andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-03-22 23:48:56

Ab Windows 8 / Server 2012 gibt es ein get-printer PowerShell Cmdlet:

Https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396

 2
Author: hmqcnoesy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-08-03 19:56:20

Hinweis: Für Windows XP müssen Sie zuerst den Standard-Skript-Host in CScript ändern

C:\CScript //H:CScript

Andernfalls erhalten Sie eine Nachricht, die Sie und Ihre Drucker dazu auffordert.txt-Datei wird leer sein.

 1
Author: cls,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-03-22 23:48:49

In PowerShell ISE Sie können dies ausführen, um eine Liste aller installierten Drucker anzuzeigen.

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

Siehe die dot.net PrinterSettings.InstalledPrinters Eigenschaft für weitere Informationen.

 0
Author: stomy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-25 19:51:03

Da WMI abgeschrieben wird, werde ich CIM in Powershell verwenden:

Get-CIMInstance CIM_Printer | Format-Table Name,SystemName,ShareName >>printers.txt
 0
Author: Wasif Hasan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-09-20 15:44:59

Das ist also meine Lösung (in AutoHotkey):

;******************
;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
 0
Author: Rightcelebrator,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-09-20 15:47:27