Existe um comando que pode ser usado na linha de comando para gerar uma lista das impressoras instaladas e sua localização, se mapeadas, em um arquivo de texto? Ou talvez um programa que eu possa executar a partir da linha de comando que faria isso?
Existe um comando que pode ser usado na linha de comando para gerar uma lista das impressoras instaladas e sua localização, se mapeadas, em um arquivo de texto? Ou talvez um programa que eu possa executar a partir da linha de comando que faria isso?
Respostas:
No Windows XP, use prntmngr:
PRNMNGR -l >> C:\printers.txt
No Windows Vista e além, use o PowerShell:
get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt
Nota: Você PODE receber um erro se tentar gravar o arquivo em C: \ no Vista +, dependendo dos seus direitos e de como o PowerShell foi gerado.
Para o Windows 2000:
O arquivo PrnMngr.vbs do XP (localizado na pasta / Windows / System32) funciona no Windows 2000. Apenas localize e copie-o para a máquina 2000 de uma máquina XP e execute-o com:
cscript prnmngr.vbs -l >> c:\printers.txt
Eu descobri que não seria executado na área de trabalho do meu usuário por algum motivo, mas quando copiei o .VBS para a raiz do C: ele funcionou bem.
Eu uso:
wmic printer list brief
OU
wmic printer get name
Isso mostra apenas uma pequena lista de impressoras conectadas ao sistema em que você executa o comando. Também mostrará a que computador uma impressora está conectada se houver uma impressora de rede.
Você também pode usar isso para obter uma lista muito detalhada de configuração para cada impressora instalada em um sistema:
wmic printer list full
Para enviá-lo para um arquivo de texto, adicione-o ao final do comando:
>>"[directory]\[filename].txt"
Exemplo:
wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Às vezes, você não deseja usar o PS no win7 (eu tenho um aplicativo que me permite fazer trabalhos administrativos em segundo plano em PCs remotos, mas não usa o PowerShell). Os scripts do Visual Basic XP mencionados podem ser encontrados na seguinte pasta do Win7:
C:\Windows\System32\Printing_Admin_Scripts\en-US
A partir do Windows 8 / Server 2012, existe um get-printer
cmdlet do PowerShell:
https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396
então esta é a minha solução:
;******************
;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
Use o PowerShell.
[System.Drawing.Printing.PrinterSettings]::InstalledPrinters