Other than open every single installed printer to print test pages, here is a much better way that you can do it all at once.
Get-CimInstance Win32_Printer | Invoke-CimMethod -MethodName PrintTestPage
If you only want to certain printers, use the -Filter switch.
Get-CimInstance Win32_Printer -Filter "Name LIKE '*name*' |
Invoke-CimMethod -MethodName PrintTestPage
You can even use Get-Printer cmdlet to pick multiple printers to send the test pages.
Get-Printer | Out-GridView -OutputMode Multiple |
$printname = $_.Name.Replace("\", "\\")
Get-CimInstance Win32_Printer -Filter "Name LIKE $printname" |
Get-CimMethod -MethodName PrintTestPage
You may ask what’s the use of it to print test page to all printers. Well, I need to run a usage report on the last day each month. If that day falls on weekend or holiday, I won’t get the accurate report as a lot of the printers are put in sleep mode if not used. Sending a test pages to those printers is an easy to wake them up.