Topic: PowerShell Remoting Continued VI
Notice: This post is a part of the PowerShell Monday series — a group of quick and easy to read mini lessons that briefly cover beginning and intermediate PowerShell topics. As a PowerShell enthusiast, this seemed like a beneficial way to ensure those around me at work were consistently learning new things about Windows PowerShell. At some point, I decided I would share these posts here, as well. Here’s the PowerShell Monday Table of Contents.
If you’re done reading about PowerShell Remoting, then you’ll be glad to know that we’re wrapping it up this week with one final conversation. Today we’ll discuss implicit remoting. I recently read some Microsoft written, PowerShell documentation where they indicated this was an advanced topic. If you’ve been following along over the last several weeks, then as far as I’m concerned, you’re ready. You ought to know a good deal about PS Remoting by now.
Let’s start by considering that we have a PowerShell module called Test on a remote computer called SERVER01. Inside the module are three functions: Write-One, Write-Two, and Write-Three. When invoked, each function will echo the name of the computer where the function is running and then echo either “One!,” “Two!,” or “Three!” Here’s a quick look at the module.
As we’ve seen before, we can use Enter-PSSession to interactively connect and run any of the functions. We can also use Invoke-Command to run the functions on the remote computer and then return the results. In the implicit remoting option, we’ll create a new PSSession to a remote computer, such as we did last week, and then bring the functions to our local computer.
$Session = New-PSSession -ComputerName SERVER01 Import-PSSession -Session $Session -Module Test ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Script 1.0 tmp_jfhp0hhd.hk5 {Write-One, Write-Three, Write-Two}
By default, Import-PSSession will return output to include the ModuleType, the version, the local, temporary name it’s using for the module, and the exported commands as seen in the above results. These exported commands are the functions in the module, as you can easily tell. To hide this output, you can pipe the Import-PSSession command to Out-Null, as seen in the below example. It’ll do the same work, but without the output.
Import-PSSession -Session $Session -Module Test | Out-Null
While the temporary module now resides on our computer, it still runs the functions on the remote computer.
Write-One Write-Two Write-Three SERVER01 One! SERVER01 Two! SERVER01 Three!
Well, there we go. I think we’ve covered a fair amount of information on PowerShell Remoting. We’ll pick up with something new next week, but don’t be surprised if upcoming topics include PS Remoting in one way, or another. It’s a widely used option, when using PowerShell for remote management.
How about a series on DSC next?
Hey Abhi — it’s always great to hear from you! I write the PSMonday topics for a few groups at work, so I doubt I’ll ever introduce DSC to most them. Still though, it might be a good idea to write about it anyway. I’m not a DSC expert, so it stands to reason that I should experiment with it more than I have thus far. Even what I have done with DSC has been amazing. What a easy way to ensure state (once you have all the little pieces in place). Deleted registry settings and removing features to see them reappear is a promising feeling.