Czy istnieje polecenie, którego można użyć z wiersza polecenia, aby wyświetlić listę zainstalowanych drukarek i ich lokalizację, jeśli jest mapowana, do pliku tekstowego? A może program, który mogę uruchomić z wiersza poleceń, który by to zrobił?
Czy istnieje polecenie, którego można użyć z wiersza polecenia, aby wyświetlić listę zainstalowanych drukarek i ich lokalizację, jeśli jest mapowana, do pliku tekstowego? A może program, który mogę uruchomić z wiersza poleceń, który by to zrobił?
Odpowiedzi:
W Windows XP użyj prntmngr:
PRNMNGR -l >> C:\printers.txt
W systemie Windows Vista i nowszym użyj programu PowerShell:
get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt
Uwaga: Mógł wystąpić błąd, jeśli spróbujesz zapisać plik w C: \ na Vista +, w zależności od twoich praw i tego, jak powstał PowerShell.
W systemie Windows 2000:
Plik PrnMngr.vbs z XP (znajdujący się w folderze / Windows / System32) działa w systemie Windows 2000. Po prostu znajdź i skopiuj go na komputer 2000 z komputera XP i uruchom go za pomocą:
cscript prnmngr.vbs -l >> c:\printers.txt
Odkryłem, że z jakiegoś powodu nie będzie działał z pulpitu użytkownika, ale kiedy skopiowałem plik .VBS do katalogu głównego C: działał dobrze.
Używam:
wmic printer list brief
LUB
wmic printer get name
To pokazuje tylko krótką listę drukarek podłączonych do systemu, na którym uruchomiono polecenie. Pokaże także, do jakiego komputera podłączona jest drukarka, jeśli jest drukarka sieciowa.
Możesz także użyć tego, aby uzyskać bardzo szczegółową listę konfiguracji dla każdej drukarki zainstalowanej w systemie:
wmic printer list full
Aby wyprowadzić go do pliku tekstowego, dołącz go na końcu polecenia:
>>"[directory]\[filename].txt"
Przykład:
wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Czasami nie chcesz używać PS w win7 (mam aplikację, która pozwala mi wykonywać prace administracyjne w tle na zdalnych komputerach, ale nie używa PowerShell). Wspomniane skrypty Visual Basic XP można znaleźć w następującym folderze dla Win7:
C:\Windows\System32\Printing_Admin_Scripts\en-US
Począwszy od systemu Windows 8 / Server 2012, istnieje polecenie get-printer
cmdlet programu PowerShell:
https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396
to jest moje rozwiązanie:
;******************
;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
Użyj PowerShell.
[System.Drawing.Printing.PrinterSettings]::InstalledPrinters