Powershell-With-TFS


Run PowerShell Commands on Remote Computers or TFS server.

PowerShell Remoting allows to run individual PowerShell commands/scripts or access full PowerShell sessions on
remote Windows systems. It is similar to SSH for accessing remote terminals on other operating systems.
PowerShell is locked-down (restricted) by default, so you need to enable PowerShell Remoting before using it.
This setup process is a bit more complex if you are using a workgroup - for e.g, on a home network —
instead of a domain.

Enabling PowerShell Remoting

On the computer you want to access remotely, open a PowerShell window as Administrator - right click
the PowerShell shortcut and select Run as Administrator.
To enable PowerShell Remoting, run the following command (known as a cmdlet in PowerShell):


Example

PS> Enable-PSRemoting -Force

Copy and Try it

This command starts the WinRM service, sets it to start automatically with your system, and creates a firewall
rule that allows incoming connections. The -Force part of the command tells PowerShell to perform these
actions without prompting you for each step.

Workgroup Setup

If your computers aren't on a domain - say, if you're doing this on a home network - you'll need to
perform a few more steps. First, run the Enable-PSRemoting -Force command on the computer you want to connect from, as well. (Remember to launch PowerShell as Administrator before running this command.)
On both computers, configure the TrustedHosts setting so the computers will trust each other.
For example, if you're doing this on a trusted home network, you can use this command to allow any computer to connect:

Example

PS> Set-Item wsman:\localhost\client\trustedhosts *

Copy and Try it


To restrict computers that can connect, you could also replace the * with a comma-separated list of
IP addresses or computer names.
On both computers, restart the WinRM service so your new settings will take effect:

Example

Restart-Service WinRM

Copy and Try it

Testing the Connection

On the computer you want to access the remote system from, use the Test-WsMan cmdlet to test your
configuration. This command tests whether the WinRM service is running on the remote computer - if it completes successfully, you'll know that WinRM is enabled and the computers can communicate with each other.
Use the following cmdlet, replacing COMPUTER with the name of your remote computer:

Example

PS> Test-WsMan COMPUTER

Copy and Try it


If the command completes successfully, you will see information about the remote computer's
WinRM service in the window. If the command fails, you'll see an error message instead.

Executing a Remote Command

To run a command on the remote system, use the Invoke-Command cmdlet.
The syntax of the command is as follows:

Example

PS> Invoke-Command -ComputerName COMPUTER -ScriptBlock { COMMAND } 
-credential USERNAME

Copy and Try it


COMPUTER represents the computer's name, COMMAND is the command you want to run,
and USERNAME is the username you want to run the command as on the remote computer. You'll be prompted to enter a password for the username.
For example, to view the contents of the C:\ directory on a remote computer
named MYMACHINENAME as the user john, we could use the following command:

Example

PS> Invoke-Command -ComputerName MYMACHINENAME -ScriptBlock { Get-ChildItem C:\ } 
-credential john

Copy and Try it

Starting a Remote Session

Use the Enter-PSSession cmdlet to start a remote PowerShell session,
where you can run multiple commands, instead of running a single command:

Example

PS> Enter-PSSession -ComputerName COMPUTER -Credential USER

Copy and Try it