Enable PSRemoting - PowerShell


Enable-PSRemoting allows remote sessions to be established on the local computer. It configures Windows Remote Management (WinRM) to listen to network traffic on specific ports, ensuring secure and encrypted communication.


Enable-PSRemoting [-Force] [-SkipNetworkProfileCheck] [-UseSSL] [-Confirm] [-WhatIf]


  • -Force

    • Forces the command to complete even if the WinRM service is not running.
  • -SkipNetworkProfileCheck

    • Skips checking network profiles to enable PSRemoting on all profiles. By default, PSRemoting is enabled only on the current network profile.
  • -UseSSL

    • Configures WinRM to use SSL encryption for secure communication. Default: False
  • -Confirm

    • Prompts the user to confirm the action before executing it.
  • -WhatIf

    • Simulates the command without executing it, providing a preview of the changes.


Example 1: Enable PSRemoting on the current network profile


Example 2: Enable PSRemoting on all profiles and use SSL encryption

Enable-PSRemoting -SkipNetworkProfileCheck -UseSSL

Common Issues

  • WinRM service not running: Ensure the WinRM service is running before enabling PSRemoting.
  • Firewall blocking ports: Check if the firewall is blocking incoming traffic on ports 80 (HTTP) or 443 (HTTPS).
  • Network connectivity issues: Verify network connectivity and ensure the remote computer is accessible.


Use with Invoke-Command: Invoke-Command can execute commands on remote computers that have PSRemoting enabled.

Invoke-Command -ComputerName remotecomputer -ScriptBlock { Get-Process }

Use in scripts: Enable-PSRemoting can be used in scripts to automate the process of enabling remote access.

$remoteComputers = Get-ComputerName
ForEach ($computer in $remoteComputers) {
    Enable-PSRemoting -ComputerName $computer -SkipNetworkProfileCheck
  • Get-WSManCredSSP
  • New-PSSession
  • Invoke-Command