Advanced Windows PowerShell Scripting Video Training

Advanced Windows PowerShell Scripting Video Training
Advanced Windows PowerShell Scripting Video Training

Tuesday, November 10, 2009

How to access remote computers with PowerShell?

Windows PowerShell V2 allows you to access remote computers and execute PowerShell commands on those remote clients. The following steps illustrate how to create a session with a single client.

For every client that we will be remotely accessing, we need to run the command:

  • Winrm quickconfig
  • Press Y at all prompts.

This will open the ports on the firewall that we need open for remote management.

Now, on the copmuter that will be making the remote connection, type:

  • Enter-PSSession –computerName ComputerName

In my case, the ComputerName parameter is MCT-1. Once the session is established, your prompt will look like this:

[MCT-1]: PS C:\Users\Administrator\Documentss>

Go ahead and type Get-Service. You should notice that what is returned is the services from the remote client.

Type Exit to return to your local client.

Now what about multiple sessions?

Once you have run WinRM QuickConfig on multiple clients, you can set up multiple sessions.

My current setup has me on a computer named MCT-Win7-1 I want to set up a session to two other clients, MCT-1 and MCT-Win7-2. I type in this command:

New-PSSession MCT1, MCT-Win7-2

What comes back are the session numbers. With this method, you can only have on session open at a time. To access one one of the sessions, type Enter-PSSession –ID and then the session number.

Once you have comleted your work with that client, type Exit.

You can get a list of all open sessions by typing Get-PSSession.

So how do you run a command in all sessions? First lets save the current sessions in a variable.

$PSList = Get-PSSession

Now, we are going to use the Invoke-Command commandlet.

Invoke-Command –session $PSList –scriptblock {Get-Service}

From here you will receive a list of the data returned.

You can close the sessions in one of two ways.

Remove-PSSession – ID SessionNumber

Or

Remove-PSSession –session $PSList

No comments: