Yüklü olan yazıcıların bir listesini ve haritalanmışsa konumlarını bir metin dosyasına vermek için komut satırından kullanılabilecek bir komut var mı? Ya da belki bunu yapacak olan komut satırından çalıştırabileceğim bir program?
Yüklü olan yazıcıların bir listesini ve haritalanmışsa konumlarını bir metin dosyasına vermek için komut satırından kullanılabilecek bir komut var mı? Ya da belki bunu yapacak olan komut satırından çalıştırabileceğim bir program?
Yanıtlar:
Windows XP'de prntmngr kullanın:
PRNMNGR -l >> C:\printers.txt
Windows Vista ve ötesinde, PowerShell'i kullanın:
get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt
Not: Dosyalarınızı Vista + 'daki C: \' e, kendi haklarınıza ve PowerShell'in nasıl üretildiğine bağlı olarak yazmaya çalışırsanız, bir hata alabilirsiniz.
Windows 2000 için:
XP'deki PrnMngr.vbs dosyası (/ / Windows / System32 klasöründe bulunur), Windows 2000'de çalışır. Sadece bir XP makinesinden 2000 makineyi bulup kopyalayın ve şunu çalıştırın:
cscript prnmngr.vbs -l >> c:\printers.txt
Bir sebepten dolayı kullanıcının masaüstünden çalıştırılmayacağını gördüm, ancak .VBS'yi C'nin köküne kopyaladığımda: gayet iyi yürüdü.
Kullanırım:
wmic printer list brief
VEYA
wmic printer get name
Bu sadece komutu çalıştırdığınız sisteme bağlı yazıcının kısa bir listesini gösterir. Ayrıca bir ağ yazıcısı varsa yazıcının hangi bilgisayara bağlı olduğunu da gösterir.
Bunu, bir sistemde yüklü her yazıcı için çok ayrıntılı bir yapılandırma listesi almak için de kullanabilirsiniz:
wmic printer list full
Bir metin dosyasına yazdırmak için, bunu komutun sonuna ekleyin:
>>"[directory]\[filename].txt"
Örnek:
wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Bazen PS'yi win7'de kullanmak istemezsiniz (uzaktaki bilgisayarlarda arka planda idari işler yapmama izin veren bir uygulamam var, ancak powershell kullanmıyor). Bahsedilen XP visual basic scriptleri Win7 için aşağıdaki klasörde bulunabilir:
C:\Windows\System32\Printing_Admin_Scripts\en-US
Windows 8 / Server 2012 ile başlayarak, bir get-printer
PowerShell cmdleti var:
https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396
öyleyse bu benim çözümüm:
;******************
;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 kullanın.
[System.Drawing.Printing.PrinterSettings]::InstalledPrinters