Чи є команда, яку можна використовувати з командного рядка для виведення списку встановлених принтерів та їх розташування, якщо їх відображено, у текстовий файл? Або, можливо, програма, яку я можу запустити з командного рядка, яка б це зробила?
Чи є команда, яку можна використовувати з командного рядка для виведення списку встановлених принтерів та їх розташування, якщо їх відображено, у текстовий файл? Або, можливо, програма, яку я можу запустити з командного рядка, яка б це зробила?
Відповіді:
У Windows XP використовуйте prntmngr:
PRNMNGR -l >> C:\printers.txt
У Windows Vista та пізніше використовуйте PowerShell:
get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt
Примітка: Ви можете отримати помилку, якщо спробуєте записати файл на C: \ на Vista +, залежно від ваших прав та способу породження PowerShell.
Для Windows 2000:
Файл PrnMngr.vbs з XP (розташований у папці / Windows / System32) працює на Windows 2000. Просто знайдіть і скопіюйте його на комп'ютер 2000 з машини XP і запустіть його:
cscript prnmngr.vbs -l >> c:\printers.txt
Я виявив, що він чомусь не працюватиме з робочого столу мого користувача, але коли я скопіював .VBS до кореня C: він працював нормально.
Я використовую:
wmic printer list brief
АБО
wmic printer get name
Це просто показує короткий список принтера, приєднаного до системи, на якій запускається команда. Він також покаже, до якого комп'ютера підключений принтер, якщо є мережевий принтер.
Ви також можете скористатися цим, щоб отримати дуже детальний список конфігурацій для кожного принтера, встановленого в системі:
wmic printer list full
Щоб вивести його у текстовий файл, додайте це до кінця команди:
>>"[directory]\[filename].txt"
Приклад:
wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Іноді ви не хочете використовувати PS в win7 (у мене є додаток, який дозволяє мені виконувати адміністративні роботи у фоновому режимі на віддалених ПК, але він не використовує powerhell). Згадані базові сценарії XP Visual можна знайти в наступній папці для Win7:
C:\Windows\System32\Printing_Admin_Scripts\en-US
Починаючи з Windows 8 / Server 2012, є get-printer
командлет PowerShell:
https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396
тому це моє рішення:
;******************
;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
Використовуйте Powershell.
[System.Drawing.Printing.PrinterSettings]::InstalledPrinters