2010-04-28 02:47:03 +0000 2010-04-28 02:47:03 +0000
30
30
Advertisement

Lijst printers van opdrachtregel naar tekstbestand

Advertisement

Is er een commando dat vanaf de opdrachtregel kan worden gebruikt om een lijst van de geïnstalleerde printers en hun locatie, indien in kaart gebracht, naar een tekstbestand te sturen? Of misschien een programma dat ik vanaf de opdrachtregel kan uitvoeren en dat dit zou doen?

Advertisement
Advertisement

Antwoorden (7)

28
28
28
2010-04-28 03:18:35 +0000

In Windows XP gebruikt u prntmngr:

PRNMNGR -l >> C:\printers.txt

In Windows Vista en hoger gebruikt u PowerShell:

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

Opmerking: U KAN een foutmelding krijgen als u probeert het bestand naar C:³ te schrijven op Vista+, afhankelijk van uw rechten, en hoe PowerShell is gespawnd.

Voor Windows 2000:

Het PrnMngr.vbs-bestand van XP (in de map /Windows/System32) werkt wel op Windows 2000. Kopieer het van een XP machine naar de 2000 machine en voer het uit met:

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

Ik ontdekte dat het om de een of andere reden niet wilde draaien vanaf het bureaublad van mijn gebruiker, maar toen ik de .VBS naar de root van C: kopieerde, werkte het prima.

18
18
18
2017-05-11 18:44:28 +0000

Ik gebruik:

wmic printer list brief

OR

wmic printer get name

Dit toont alleen een korte lijst van printers die verbonden zijn met het systeem waarop je het commando uitvoert. Het laat ook zien met welke computer een printer is verbonden als er een netwerkprinter is.

Je kunt dit ook gebruiken om een zeer gedetailleerde lijst te krijgen van de configuratie voor elke printer die op een systeem is geïnstalleerd:

wmic printer list full

Om dit naar een tekstbestand te sturen, voeg je dit toe aan het eind van het commando:

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

Voorbeeld:

wmic printer list brief >> c:\users\admin\documents\printerlist.txt
4
Advertisement
4
4
2014-04-16 14:09:17 +0000
Advertisement

Soms wil je PS niet gebruiken in win7 (ik heb een toepassing waarmee ik administratief werk op de achtergrond kan doen op pc’s op afstand, maar die maakt geen gebruik van powershell). De genoemde XP visual basic scripts zijn te vinden in de volgende map voor Win7:

C:\Windows\System32\Printing_Admin_Scripts\en-US
2
2
2
2016-08-03 19:56:20 +0000

Vanaf Windows 8 / Server 2012, is er een get-printer PowerShell cmdlet: https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396

1
Advertisement
1
1
2013-03-08 17:19:12 +0000
Advertisement

Opmerking: Voor Windows XP moet je de standaard script host eerst veranderen in CScript

C:\CScript //H:CScript

anders krijg je een bericht dat je dat moet doen en is je printers.txt bestand leeg.

0
0
0
2019-04-17 19:50:16 +0000

Gebruik Powershell.

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

0
Advertisement
0
0
2018-07-06 15:48:07 +0000
Advertisement

dus dit is mijn oplossing:

; ******************
;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
Advertisement

Gerelateerde vragen

3
19
10
28
5
Advertisement