Existe-t-il une commande pouvant être utilisée à partir de la ligne de commande pour générer une liste des imprimantes installées et leur emplacement, s'ils sont mappés, dans un fichier texte? Ou peut-être un programme que je peux exécuter à partir de la ligne de commande pour le faire?
Sous Windows XP, utilisez prntmngr:
PRNMNGR -l >> C:\printers.txt
Dans Windows Vista et les versions ultérieures, utilisez PowerShell:
get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt
Remarque: Vous POUVEZ obtenir une erreur si vous tentez d'écrire le fichier dans C:\sous Vista +, en fonction de vos droits et de la manière dont PowerShell a été créé.
Pour Windows 2000:
Le fichier PrnMngr.vbs de XP (situé dans le dossier/Windows/System32) fonctionne sous Windows 2000. Il suffit de le rechercher et de le copier sur la machine 2000 à partir d'une machine XP et lancez-le avec:
cscript prnmngr.vbs -l >> c:\printers.txt
J'ai trouvé qu'il ne fonctionnerait pas du bureau de mon utilisateur pour une raison quelconque, mais lorsque j'ai copié le fichier .VBS à la racine de C: tout s'est bien déroulé.
J'utilise:
wmic printer list brief
OR
wmic printer get name
Cela montre juste une courte liste des imprimantes connectées au système sur lequel vous exécutez la commande. Il montrera également à quel ordinateur une imprimante est connectée s'il y a une imprimante réseau.
Vous pouvez également l'utiliser pour obtenir une liste très détaillée de la configuration de chaque imprimante installée sur un système:
wmic printer list full
Pour le sortir dans un fichier texte, ajoutez ceci à la fin de la commande:
>>"[directory]\[filename].txt"
Exemple:
wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Parfois, vous ne voulez pas utiliser PS dans win7 (j'ai une application qui me permet d'effectuer des tâches administratives en arrière-plan sur des ordinateurs distants, mais elle n'utilise pas Powershell). Les scripts Visual Basic XP mentionnés peuvent être trouvés dans le dossier suivant pour Win7:
C:\Windows\System32\Printing_Admin_Scripts\en-US
À partir de Windows 8/Server 2012, il existe une cmdlet get-printer
PowerShell:
https://technet.Microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396
Remarque: pour Windows XP, veillez à modifier le script hôte par défaut en CScript en premier.
C:\CScript //H:CScript
sinon, vous recevrez un message vous invitant à le faire et votre fichier printers.txt sera vide.
Utilisez Powershell.
[System.Drawing.Printing.PrinterSettings]::InstalledPrinters
alors voici ma solution:
;******************
;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