Recently, one IT team member asked about a PowerShell script to enable remote desktops. In this tutorial, I will explain how to enable Remote Desktop (RDP) using PowerShell with detailed steps.
Enable Remote Desktop Using PowerShell
Remote Desktop is useful for administrators and users who need to access their computers remotely. Using PowerShell to enable RDP can save time and ensure consistency across multiple machines.
Note: You need administrative privileges on the target machine to enable RDP.
Now, follow the steps to enable remote desktop using PowerShell.
Step 1: Open PowerShell with Administrative Privileges
To enable Remote Desktop, you need to run PowerShell as an administrator. Right-click on the Start menu, select Windows PowerShell (Admin), and click Yes when prompted by User Account Control (UAC).
Step 2: Check the Current RDP Status
Before enabling RDP, it’s a good practice to check if it is already enabled. You can do this by querying the registry:
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\' -Name "fDenyTSConnections"
If the output is 1, RDP is disabled. If it is 0, RDP is already enabled.
I executed the above PowerShell script on my local machine; you can see the exact output as 1, which means the RDP is disabled.
Step 3: Enable Remote Desktop
To enable Remote Desktop, modify the registry setting and configure the firewall to allow RDP connections. Here’s the PowerShell script to do this:
# Enable RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\' -Name "fDenyTSConnections" -Value 0
# Enable RDP through the firewall
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
This script sets the fDenyTSConnections value to 0 (enabling RDP) and configures the firewall to allow RDP traffic.
Step 4: Verify RDP is Enabled
After running the script, verify that RDP is enabled by checking the registry value again:
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\' -Name "fDenyTSConnections"
The output should now be 0.
Check out Rename a Computer Using PowerShell
Enable RDP on Multiple Machines using PowerShell
If you need to enable RDP on multiple machines, you can use PowerShell remoting. Here’s an example script to enable RDP on a list of remote computers:
$computers = @("PC1", "PC2", "PC3") # Replace with your computer names
foreach ($computer in $computers) {
Invoke-Command -ComputerName $computer -ScriptBlock {
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\' -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
}
}
This script loops through a list of computer names and enables RDP on each one.
Check out Get the Windows Version Using PowerShell
Troubleshoot Common Issues
Now, let me tell you some common issues that you might face while enabling RDP using PowerShell.
Issue 1: PowerShell Remoting Not Enabled
If you encounter an error indicating that PowerShell remoting is not enabled, you can enable it using the following command:
Enable-PSRemoting -Force
This command configures the computer to receive remote commands.
Issue 2: Firewall Blocking RDP
If the firewall is blocking RDP, ensure that the necessary firewall rules are enabled. You can manually check the firewall settings or use the following command:
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
This command enables the firewall rules for the Remote Desktop.
Now, let me show you some advanced-level settings you can do using PowerShell.
Read Get a List of Installed Programs Using PowerShell
Configure Network Level Authentication (NLA)
Network Level Authentication (NLA) adds an extra layer of security to Remote Desktop connections. To enable NLA, use the following PowerShell script:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\' -Name "UserAuthentication" -Value 1
This script sets the UserAuthentication value to 1, enabling NLA.
Set RDP Port
By default, RDP uses port 3389. If you need to change this port for security reasons, you can do so using PowerShell:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\' -Name "PortNumber" -Value 3390
Replace 3390 with your desired port number. Ensure you update your firewall rules to allow traffic on the new port.