Printers

PowerShell Script: Easily Set All Local Printers to Grayscale (Black & White)

Do you want to save on color ink or simply enforce black and white printing across all local printers on a machine? This simple yet powerful PowerShell script lets you quickly configure every installed printer to use grayscale (black and white) by default.


Why Use This Script?

  • Cost Savings: Reduce expensive color ink/toner usage immediately.
  • Default Enforcement: Ensure users print in black and white unless they manually override the setting (which is often forgotten).
  • Efficiency: A quick way to manage multiple local printers without going into each printer’s properties individually.

The PowerShell Code

Here is the script. It’s clean, efficient, and uses standard PowerShell cmdlets.

PowerShell

PowerShell: Set Printers to Grayscale
# Get all printers installed on the local machine
$Printers = Get-Printer

# Loop through each printer in the list
foreach ($Printer in $Printers) {
    # Set the 'Color' property to $False (which means Grayscale/Black & White)
    Write-Host "Setting printer '$($Printer.name)' to Grayscale..."
    Set-PrintConfiguration -PrinterName $Printer.name -Color $False
}

Write-Host "---"
Write-Host "✅ All printers have been configured for grayscale printing."

How to Use It

  1. Open PowerShell as Administrator: Right-click the PowerShell icon and select Run as administrator. This is often required to modify printer configurations.
  2. Copy and Paste: Copy the entire script block above.
  3. Execute: Paste the code into the PowerShell window and press Enter.
  4. Verify: The script will list each printer as it modifies the setting.

Note: This script modifies the default printing preference on the machine where it is run. It will not affect network printers for other users unless executed on their specific machine or server (depending on your print environment setup).


💡 Understanding the Cmdlets

  • Get-Printer: This cmdlet retrieves a list of all printers configured on the local system. The output is stored in the variable $Printers.
  • foreach ($Printer in $Printers): This loop processes each individual printer object one by one.
  • Set-PrintConfiguration -PrinterName $Printer.name -Color $False: This is the core command.
    • -PrinterName $Printer.name specifies which printer the setting applies to (using the name gathered from the loop).
    • -Color $False explicitly sets the default color mode to off, forcing the printer’s driver to use its grayscale or black and white setting.

Enjoy your ink savings! Let us know in the comments if you have any modifications or other handy PowerShell printer management tips.