• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Think PowerShell

Think PowerShell

PowerShell for IT Pros

  • About
    • Who I Am
    • Why I Blog
    • Privacy Policy
  • Resources
    • More PowerShell Sites
    • Post Series Index
  • Get Help
  • Show Search
Hide Search

Understanding PowerShell Remoting

Aaron Rothstein · July 18, 2023 · Leave a Comment

PowerShell Remoting is a powerful feature that allows IT professionals to control and automate the administration of Windows machines from a distance. This article introduces PowerShell Remoting, including how to use it, its prerequisites, and some best practices to follow.

What is PowerShell Remoting?

PowerShell Remoting lets you run PowerShell commands or scripts on remote computers. It’s based on the Windows Remote Management (WinRM) service and the Simple Object Access Protocol (SOAP).

With PowerShell Remoting, you can manage an entire network of computers from a single console, making it a vital tool for IT professionals in large enterprises.

Setting up PowerShell Remoting

Before using PowerShell Remoting, you must enable it on both the local and remote machines. Here’s how you can enable it:

Enable-PSRemoting -Force

This command starts the WinRM service, sets it to start automatically with your system, and creates a firewall rule that allows incoming connections.

Network-level requirements

Beyond the host firewall rules, make sure that ports tcp/5985 for http and potentially tcp/5986 for https are open from your admin host to your remote host.

Creating a remote session

To create a remote session, you can use the New-PSSession cmdlet, followed by Enter-PSSession to enter the session:

$Session = New-PSSession -ComputerName RemotePC
Enter-PSSession -Session $Session

Once in the session, any command you run is executed on the remote machine.

To end the session, you can use the Exit-PSSession cmdlet.

Executing commands remotely

To run a single command on a remote computer, use the Invoke-Command cmdlet:

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

Best practices

Here are some best practices for using PowerShell Remoting:

Here are some best practices for using PowerShell Remoting:

  • Security: PowerShell Remoting uses the WS-Man protocol, which is a SOAP-based protocol that uses HTTP and HTTPS. While the connection is encrypted, it’s important to use HTTPS in a production environment for an additional layer of security.
  • Error Handling: When running commands remotely, ensure that your scripts have proper error handling. The execution of a command on a remote computer is considered a single operation, and an error in the remote command does not affect the local error status.
  • Don’t Forget to Exit: After a remote session, don’t forget to use Exit-PSSession to end the session and free up resources.
  • Use Sessions for Multiple Commands: If you plan on executing multiple commands on a remote machine, it’s more efficient to create a session with New-PSSession and run your commands within the session.

Conclusion

PowerShell Remoting is an incredibly powerful tool for managing and automating tasks on remote computers. With a solid understanding of its functionality, you can significantly enhance your efficiency and productivity as an IT professional.

More resources

  • PowerShell 101 – Chapter 8 – PowerShell remoting | learn.microsoft.com
  • PowerShell Remoting FAQ | learn.microsoft.com

General

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Aaron

Think PowerShell

Copyright © 2025 · Monochrome Pro on Genesis Framework · WordPress · Log in