This solution works based on the printer's initial starting configuration and those specific settings being set to match as your desired result. This uses Win32_Printer class to set the bool values accordingly.
$printer = "TestPrinter";
Get-WmiObject -Class Win32_Printer | Where-Object {$_.Name -eq $printer} | ForEach-Object {
$_.DoCompleteFirst = $True
$_.Direct = $False
$_.Put() | Out-Null
};
It's worth noting that I cannot quite figure out how to toggle the specific option "Start printing immediately" though unless the initial starting configuration is set as "Print directly to the printer".
So if your starting configuration is set as "Start printing after last page is spooled" then this is only a partial answer as it does not toggle it with that set initially.
Notes
- A workaround of setting the
print processor to a value winprint might help per those being its defaults but I couldn't safely test that in my environment.
- The
SpoolEnabled is not changeable any longer if it's even applicable in that specific configuration.
Supporting Resources