Native PSSession PowerShell Scripting
The exploration of CIM and using the CimSession
.NET class in PowerShell scripting got me thinking about another remoting option, PSSession
. This could be another option for creating PowerShell scripts with remoting baked in. I'd like to have a function that doesn't rely on parameter sets to distinguish between a computer name and an existing PSSession.
However, unlike CimSession
, I can't easily create a PSSession
object from a computer name. There is a little more involved, but it isn't too difficult. I thought I'd demonstrate how to crate and use a PSSession
object from scratch. If nothing else, hopefully, you'll learn a little more about how PowerShell remoting works under the hood and maybe pickup a scripting idea or two.
What I want to demonstrate requires PowerShell 7. I'm going to rely on a static method that doesn't exist in Windows PowerShell. But remember, you can still remotely connect to and manage systems running Windows PowerShell from a PowerShell 7 desktop. I am also leveraging traditional PowerShell remoting which means a Windows platform. Although I will show you how to setup an SSH PowerShell remoting session from scratch.
There are several pieces to this puzzle. Creating a PSSession
object is not as easy as what I showed you with CimSession
. We know we ultimately need to create a System.Management.Automation.Runspaces.PSSession
object. It was easy enough to create a session using New-PSSession
and getting the type name with Get-Member
. I'll dig deeper using Get-TypeMember
.