Download SetPrinter.exe, a command-line tool to set
configurations or states of local and remote printers, for an individual printer or for all printers on a print server.
SetPrinter uses the following general syntax:setprinter \[/show\] \{\\server | \\server\printer | printer\} \{printer_info_level\} \[keyword="\[- | +\]value" ...\] \[\{pause | resume | purge | setstatus\}\] setprinter \{/help | /examples\} \{printer_info_level\}When you open a CMD.EXE windows and type setprinter /?, you receive:
Syntax: SetPrinter <\\server|printer> <level> \[<data> ...\] \[<cmd>\] or SetPrinter -help <level> or SetPrinter -examples <level> or SetPrinter -show <\\server|printer> <level> where: \\server : change all local printers on this server ("" for local machine) printer : change this printer (printer or \\server\printer) level : PRINTER_INFO level (0 - 9). data : (optional) Level specific data in 'keyword=value keyword=value' format. Data is unchanged for keywords not specified. cmd : (optional, but must be last if present) one of: "pause", "resume", "purge", "setstatus" -help : show format of data for <level> -examples: show usage examples for <level> -show : show current settings (no changes applied)printer_info_level Specifies the printer information level. The valid values are 0 though 9. The printer information level is part of the SetPrinter application programming interface (API).
Level | Structure |
---|---|
0 | If the Command parameter is PRINTER_CONTROL_SET_STATUS, pPrinter must contain a DWORD value that specifies the new printer status to set. For a list of the possible status values, see the Status member of the PRINTER_INFO_2 structure. Note that PRINTER_STATUS_PAUSED and PRINTER_STATUS_PENDING_DELETION are not valid status values to set.
If Level is 0, but the Command parameter is not PRINTER_CONTROL_SET_STATUS, pPrinter must be NULL. |
2 | A PRINTER_INFO_2 structure containing detailed information about the printer. |
3 | Windows NT/2000/XP: A PRINTER_INFO_3 structure containing the printer's security information. |
4 | Windows NT/2000/XP: A PRINTER_INFO_4 structure containing minimal printer information, including the name of the printer, the name of the server, and whether the printer is remote or local. |
5 | A PRINTER_INFO_5 structure containing printer information such as printer attributes and time-out settings. |
6 | Windows 2000/XP: A PRINTER_INFO_6 structure specifying the status value of a printer. |
7 | Windows 2000/XP: A PRINTER_INFO_7 structure. The dwAction member of this structure indicates whether SetPrinter should publish, unpublish, re-publish, or update the printer's data in the directory service. |
8 | Windows 2000/XP: A PRINTER_INFO_8 structure specifying the global default printer settings. |
9 | Windows 2000/XP: A PRINTER_INFO_9 structure specifying the per-user default printer settings. |
Examples:
setprinter -examples 0 Used to pause, resume, or purge (all jobs from) a print queue. To see current settings: SetPrinter -show PrinterName 0 To pause a printer: SetPrinter PrinterName 0 pause To resume a printer: SetPrinter PrinterName 0 resume To delete all jobs from all printers on the local machine: SetPrinter "" 0 purge To indicate all printers on a remote machine are not available: SetPrinter \\ServerName 0 "status=|notavailable" setstatus To indicate all printers on a remote machine are no longer offline: SetPrinter \\ServerName 0 "status=|~offline" setstatus setprinter -examples 1 SetPrinter does not support the setting of Level 1 values. To see current settings: SetPrinter -show PrinterName 1 setprinter -examples 3 Used to configure most print queue settings. To see current settings: SetPrinter -show PrinterName 2 To share a printer: SetPrinter PrinterName 2 "pShareName=ShareName" "Attributes=+shared" To unshare a printer: SetPrinter PrinterName 2 "Attributes=|~shared" To change a printer name: SetPrinter PrinterName 2 "pPrinterName=New name" To make a pooled printer (one queue, multiple ports): SetPrinter PrinterName 2 "pPortName=LPT1,LPT2,IP_10.0.0.0" To set all printers on the local machine to spool RAW only,keep printed jobs, and print spooled jobs first: SetPrinter "" 2 "Attributes=|rawonly keepjobs docompletefirst" To enable long-side duplex printing and collation on all printers on a remote machine (dmFields settings are optional since they are implicitly set): SetPrinter \\ServerName 2 "pdevmode=dmduplex=2,dmCollate=1,dmFields=|duplex collate" To set default paper size to A4 on all local printers: (for current user. Use level 8 to set global default) SetPrinter "" 2 "pdevmode=dmPaperSize=9, dmPaperLength=2970, dmPaperWidth=2100, dmFormName=A4" setprinter -examples 3 Used to set print queue security. Note: Security settings can only be set as a whole. No support is provided for partial modifications. To see current settings: SetPrinter -show PrinterName 3 To change security settings (see "Security Descriptor String Format" in MSDN or SDKdocs for details): *** WARNING: this could make the print queue inaccessable and require the use of a registry editor to fix ***SetPrinter PrinterName 3 "pSecurityDescriptor=O:BAG:DUD:(A;CIIO;RC;;;CO)(A;OIIO;GA;;;CO)(A;;SWRC;;;WD)(A;CIIO;GX;;;WD)(A;;LCSWSDRCWDWO;;;BA)(A;OICIIO;GA;;;BA)(A;;LCSWSDRCWDWO;;;PU)(A;OICIIO;GA;;;PU)"
To leave the settings unchanged (but what's the point then): SetPrinter PrinterName 3 "pSecurityDescriptor=NULL" setprinter -examples 4 Not often used since level 2 has this and more control (but is slower). To see current settings: SetPrinter -show PrinterName 4 To change a printer name: SetPrinter PrinterName 4 "pPrinterName=newname" To unshare a printer: SetPrinter PrinterName 4 "Attributes=|~shared" setprinter -examples 5 Used primarily to change timeout values for LPT ports. To see current settings: SetPrinter -show PrinterName 5 To set retry timeout to 15 minutes (900 seconds): SetPrinter PrinterName 5 "TransmissionRetryTimeout=900" To change a printer name: SetPrinter PrinterName 5 "pPrinterName=newname" To change a print queue's port: SetPrinter PrinterName 5 "pPortName=NewPortName" setprinter -examples 6 Used to set a print queue's status. Same as level 0 with SetStatus command. To see current settings: SetPrinter -show PrinterName 6 To indicate a printer is not available: SetPrinter PrinterName 6 "dwstatus=|notavailable" To indicate all printers on a remote machine are no longer offline: SetPrinter \\ServerName 6 "dwstatus=|~offline" setprinter -examples 7 Used to publish or unpublish a printer in the ActiveDirectory. To see current settings: SetPrinter -show PrinterName 7 To publish a printer: SetPrinter PrinterName 7 "dwAction=publish" To unpublish all printers on the local machine: SetPrinter "" 7 "dwAction=unpublish" To republish all printers on a remote machine: SetPrinter \\ServerName 7 "dwAction=republish" setprinter -examples 8 Used to set global document printing defaults. To see current settings: SetPrinter -show PrinterName 8 To disable collation on a printer: SetPrinter PrinterName 8 "pdevmode=dmCollate=0" To enable long-side duplex printing and collation on all printers on a remote machine (dmFields settings are optional since they are implicitly set): SetPrinter \\ServerName 8 "pdevmode=dmduplex=2,dmCollate=1,dmFields=|duplex collate" To set default paper size to A4 on all local printers: SetPrinter "" 8 "pdevmode=dmPaperSize=9, dmPaperLength=2970, dmPaperWidth=2100, dmFormName=A4" setprinter -examples 9 Used to set current-user document printing defaults. Not really useful for remote servers/printers since there is no associated current user. To see current settings: SetPrinter -show PrinterName 9 To disable collation on a printer: SetPrinter PrinterName 9 "pdevmode=dmCollate=0" To enable long-side duplex printing and collation on all printers (dmFields settings are optional since they are implicitly set): SetPrinter "" 9 "pdevmode=dmduplex=2,dmCollate=1,dmFields=|duplex collate" To set default paper size to A4 on all local printers: SetPrinter "" 9 "pdevmode=dmPaperSize=9, dmPaperLength=2970, dmPaperWidth=2100, dmFormName=A4"
0 comments
Hide comments