How to Set Up Remote Desktop Printer Redirection on Windows Server 2019
Remote Desktop printer redirection allows users connecting to an RD Session Host on Windows Server 2019 to print from within their remote session to printers attached to their local client computer. Without printer redirection, RDS users can only print to printers that are physically connected to the server or shared on the network — they have no access to their local USB or network-connected printers. With redirection enabled, the user’s local printers automatically appear in the remote session’s list of available printers.
How Printer Redirection Works
When a user connects to an RDSH server with printer redirection enabled, Windows automatically creates a redirected printer in the session for each printer attached to the client machine. The redirected printer name typically appears in the format “PrinterName on ClientComputerName”. When the user prints to this redirected printer, the print job is sent as a data stream from the RDSH server back through the RDP connection to the client machine, where the client’s local print spooler renders and prints it on the physical printer.
The Easy Print driver (Remote Desktop Easy Print) is the default mechanism. It sends print jobs in XPS format to the client, which then uses the local printer driver to render the output. This means no specific printer drivers need to be installed on the RDSH server — Easy Print handles all printer types.
Configuring Printer Redirection via Group Policy
Printer redirection is enabled by default in Windows Server 2019 RDS. Configure printer redirection settings through Group Policy on the RD Session Host computers.
# GPO Path: Computer Configuration > Administrative Templates >
# Windows Components > Remote Desktop Services > RD Session Host >
# Printer Redirection
# Registry equivalents for printer redirection policies
$TSPolicies = "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services"
# Allow printer redirection (0=allow, 1=disable)
Set-ItemProperty -Path $TSPolicies -Name "fDisableCpm" -Value 0
# Use Easy Print driver for all redirected printers
Set-ItemProperty -Path $TSPolicies -Name "fUseDefaultClientPrinter" -Value 1
# Set the client default printer as the default in the session
Set-ItemProperty -Path $TSPolicies -Name "fForceClientLptDef" -Value 1
Disabling Printer Redirection
In environments where printing is not required or where security policies prohibit it, disable printer redirection to prevent users from printing sensitive documents locally.
# Disable all printer redirection
Set-ItemProperty -Path $TSPolicies -Name "fDisableCpm" -Value 1
# Verify the setting
Get-ItemProperty -Path $TSPolicies -Name "fDisableCpm"
Configuring Easy Print (Remote Desktop Easy Print)
Remote Desktop Easy Print is installed automatically as part of the RDS role. Verify it is present and the spooler service is running on RDSH servers.
# Verify Easy Print driver is installed
Get-PrinterDriver | Where-Object { $_.Name -like "*Remote Desktop*" -or $_.Name -like "*Easy Print*" }
# Ensure the Print Spooler service is running
Get-Service -Name Spooler | Select-Object Status, StartType
# Start the spooler if stopped
Start-Service -Name Spooler
Set-Service -Name Spooler -StartupType Automatic
Setting Printer Redirection in RDP Files
The client RDP file controls whether the client sends its printers to the remote session. Both the server-side Group Policy and client-side RDP settings must permit printer redirection for it to work.
# RDP file settings for printer redirection
$RDPContent = @"
full address:s:rdsh01.corp.local
redirectprinters:i:1
redirectcomports:i:0
redirectclipboard:i:1
"@
$RDPContent | Out-File "C:RDPFilessession_with_printing.rdp" -Encoding ASCII
# redirectprinters:i:1 = enable printer redirection
# redirectprinters:i:0 = disable printer redirection
# For mstsc command line
Start-Process "mstsc.exe" -ArgumentList "/v:rdsh01.corp.local /RedirectPrinters"
Managing Redirected Printers in Sessions
Within a remote session, redirected printers appear in the Printers & Scanners settings and the print dialog of any application. Administrators can query redirected printers using PowerShell or the command line.
# List all printers visible in the current session (run inside the RDS session)
Get-Printer | Select-Object Name, DriverName, PortName, PrinterStatus |
Where-Object { $_.Name -like "*on*" -or $_.PortName -like "*TS*" }
# List all redirected printers across all sessions on the RDSH server (run on RDSH server)
Get-WmiObject -Class Win32_Printer |
Where-Object { $_.PortName -like "TS*" -or $_.Name -like "* on *" } |
Select-Object Name, PortName, Default, PrinterStatus
# Check printer redirection ports (TS001, TS002, etc.)
Get-PrinterPort | Where-Object { $_.Name -like "TS*" } | Select-Object Name, Description
Troubleshooting Printer Redirection Issues
Common printer redirection problems include printers not appearing in the remote session, print jobs not completing, or print quality issues. Work through these diagnostic steps systematically.
# Step 1: Verify printer redirection is not blocked by Group Policy
Get-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services" |
Select-Object fDisableCpm, fUseDefaultClientPrinter
# Step 2: Check the Print Spooler service is running and healthy
Get-Service Spooler
Get-EventLog -LogName System -Source "Print Spooler" -Newest 20 | Format-List
# Step 3: Check for Easy Print driver errors
Get-EventLog -LogName Application -Source "*TS*Print*" -Newest 20
# Step 4: Verify the RDP client is configured to redirect printers
# In mstsc.exe > Local Resources > Local devices and resources > Printers must be checked
# Step 5: Test connection with verbose logging
# Run on the RDSH server
Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 50 |
Where-Object { $_.Message -like "*redirect*" } |
Select-Object TimeCreated, Id, Message | Format-List
Configuring Print Job Compression
On slow connections, large print jobs sent through RDP can consume significant bandwidth. Enable print data compression to reduce the data transmitted for each print job.
# Enable print job compression for redirected printers
Set-ItemProperty -Path $TSPolicies -Name "RedirectOnlyDefaultClientPrinter" -Value 0
# For bandwidth-sensitive environments, restrict redirected printing to the default printer only
Set-ItemProperty -Path $TSPolicies -Name "RedirectOnlyDefaultClientPrinter" -Value 1
Deploying Network Printers in RDS Sessions
In addition to redirected local printers, deploy network print servers using Group Policy to map printers for RDS sessions automatically at logon. Use Deployed Printers under User Configuration in GPO.
# Add a network printer for all RDS users via Group Policy Preferences
# GPO Path: User Configuration > Preferences > Control Panel Settings > Printers
# Create a shared printer connection to \printserverPrinterName
# Or deploy printers via PowerShell in a logon script
# Run this in a logon script for RDS users
$NetworkPrinter = "\printserver.corp.localFloorPrinter01"
if (-not (Get-Printer | Where-Object { $_.Name -eq $NetworkPrinter })) {
Add-Printer -ConnectionName $NetworkPrinter
Write-Host "Added network printer: $NetworkPrinter"
}
# Set the network printer as default for the session
(New-Object -ComObject WScript.Network).SetDefaultPrinter($NetworkPrinter)
Security Considerations for Printer Redirection
Printer redirection can be a vector for data leakage if users can print sensitive documents to unmonitored local printers. Consider the following controls. Restrict printer redirection to domain-joined managed devices only, enforced by Network Access Protection or certificate-based authentication. Enable print auditing to log all print jobs from RDS sessions. Implement a follow-me printing solution that requires authentication at the physical printer before releasing the job.
# Enable print auditing (log all print events)
auditpol /set /subcategory:"Detailed File Share" /success:enable
# Print events are logged as Event ID 307 in Microsoft-Windows-PrintService/Operational
# Monitor who is printing what from RDS sessions
Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" |
Where-Object { $_.Id -eq 307 } |
Select-Object -Last 20 |
Select-Object TimeCreated, @{Name="Details"; Expression={ $_.Message }} |
Format-List
Conclusion
Remote Desktop printer redirection on Windows Server 2019 uses the Easy Print driver to automatically present users’ local printers in remote sessions without requiring driver installation on the RDSH server. Group Policy controls at the server level combined with client-side RDP settings provide flexible control over which printers are redirected and for which users. Auditing print activity, restricting to default-only printer redirection in bandwidth-limited scenarios, and combining local printer redirection with centrally deployed network printers gives RDS administrators comprehensive control over the printing experience.