Есть ли команда, которую можно использовать из командной строки для вывода списка установленных принтеров и их расположения, если они сопоставлены, в текстовый файл? Или, может быть, программа, которую я могу запустить из командной строки, чтобы сделать это?
6 ответов
В 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 (у меня есть приложение, которое позволяет мне выполнять административную работу в фоновом режиме на удаленных ПК, но оно не использует powershell). Упомянутые скрипты Visual Basic XP могут быть найдены в следующей папке для Win7:
C:\Windows\System32\Printing_Admin_Scripts\en-US
Начиная с Windows 8 / Server 2012, существует командлет PowerShell get-printer
:
https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396
Примечание: для Windows XP, сначала измените хост скрипта по умолчанию на CScript
C:\CScript //H:CScript
в противном случае вы получите сообщение с указанием сделать это, и ваш файл printers.txt будет пустым.
так что это мое решение:
;******************
;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