Copy Code
TOPIC
	about_Remote

SHORT DESCRIPTION
	Describes how to run remote commands in Windows PowerShell.


LONG DESCRIPTION
	You can run remote commands on a single computer or on multiple
	computers by using a temporary or persistent connection. You can also
	start an interactive session with a single remote computer.

	This topic provides a series of examples to show you how to
	run different types of remote command. After you try these basic
	commands, read the Help topics that describe each cmdlet that is
	used in these commands. The topics provide the details and explain
	how you can modify the commands to meet your needs.

	Note: To use Windows PowerShell remoting, the local and remote computers
		must be configured for remoting. For more information, see
		about_Remote_Requirements. 
	

 HOW TO START AN INTERACTIVE SESSION (ENTER-PSSESSION)

	 The easiest way to run remote commands is to start an
	 interactive session with a remote computer. 

	 When the session starts, the commands that you type run on the
	 remote computer, just as though you typed them directly
	 on the remote computer. You can connect to only one
	 computer in each interactive session. 

	 To start an interactive session, use the Enter-PSSession
	 cmdlet. The following command starts an interactive session
	 with the Server01 computer:

		enter-pssession server01

	 The command prompt changes to indicate that you are connected
	 to the Server01 computer.

		Server01\PS> 

	 Now, you can type commands on the Server01 computer. 

	 To end the interactive session, type:

		exit-pssession


	 For more information, see Enter-PSSession.



 HOW TO USE CMDLETS THAT HAVE A COMPUTERNAME PARAMETER TO GET REMOTE DATA

	Several cmdlets have a ComputerName parameter that lets you
	get objects from remote computers. 

	Because these cmdlets do not use WS-Management-based Windows PowerShell
	remoting, you can use the ComputerName parameter of these cmdlets on any
	computer that is running Windows PowerShell. The computers do not have to
	be configured for Windows PowerShell remoting, and the computers do not
	have to meet the system requirements for remoting. 

	The following cmdlets have a ComputerName parameter:
 
		Clear-EventLog	Limit-EventLog
		Get-Counter	 New-EventLog
		Get-EventLog	Remove-EventLog
		Get-HotFix		Restart-Computer
		Get-Process	 Show-EventLog
		Get-Service	 Stop-Computer
		Get-WinEvent	Test-Connection
		Get-WmiObject	 Write-EventLog

  
	For example, the following command gets the services on
	the Server01 remote computer:

		get-service -computername server01


	Typically, cmdlets that support remoting without special configuration
	have a ComputerName parameter and do not have a Session parameter. To
	find these cmdlets in your session, type:

		get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
 

 HOW TO RUN A REMOTE COMMAND

	To run other commands on remote computers, use the
	Invoke-Command cmdlet.

	To run a single command or a few unrelated commands, use the
	ComputerName parameter of Invoke-Command to specify the remote
	computers. Use the ScriptBlock parameter to specify the command.

	For example, the following command runs a Get-Culture command
	on the Server01 computer.

		invoke-command -computername Server01 -scriptblock {get-culture}

	The ComputerName parameter is designed for situation in which you run
	a single command or several unrelated commands on one or many computers.
	To establish a persistent connection to a remote computer, use
	the Session parameter.

 
 HOW TO CREATE A PERSISTENT CONNECTION (PSSESSION)

	When you use the ComputerName parameter of the Invoke-Command
	cmdlet, Windows PowerShell establishes a connection just for the
	command. Then, it closes the connection when the command is complete. Any
	variables or functions that are defined in the command are lost.

	To create a persistent connection to a remote computer, use the
	New-PSSession cmdlet. For example, the following command creates
	PSSessions on the Server01 and Server02 computers and then saves the
	PSSessions in the $s variable.

		$s = new-pssession -computername Server01, Server02


 HOW TO RUN COMMANDS IN A PSSESSION
  
	With a PSSession, you can run a series of remote commands that
	share data, like functions, aliases, and the values of variables.
	To run commands in a PSSession, use the Session parameter of the
	Invoke-Command cmdlet. 

	For example, the following command uses the Invoke-Command cmdlet
	to run a Get-Process command in the PSSessions on the Server01
	and Server02 computers. The command saves the processes in a $p
	variable in each PSSession.

		invoke-command -session $s -scriptblock {$p = get-process}

	Because the PSSession uses a persistent connection, you can run
	another command in the same PSSession that uses the $p variable.
	The following command counts the number of processes saved in $p.

		invoke-command -session $s -scriptblock {$p.count}


 HOW TO RUN A REMOTE COMMAND ON MULTIPLE COMPUTERS

	To run a remote command on multiple computers, type all of
	the computer names in the value of the ComputerName parameter of
	Invoke-Command. Separate the names with commas.

	For example, the following command runs a Get-Culture command
	on three computers:

		invoke-command -computername S1, S2, S3 -scriptblock {get-culture}

	You can also run a command in multiple PSSessions. The following
	commands create PSSessions on the Server01, Server02, and Server03
	computers and then run a Get-Culture command in each of the PSSessions.

		$s = new-pssession -computername S1, S2, S3
		invoke-command -session $s -scriptblock {get-culture}


	To include the local computer list of computers, type the name of 
	the local computer, type a dot (.), or type  "localhost". 

		invoke-command -computername S1, S2, S3, localhost -scriptblock {get-culture}


 HOW TO RUN A SCRIPT ON REMOTE COMPUTERS

	To run a local script on remote computers, use the
	FilePath parameter of Invoke-Command.

	For example, the following command runs the Sample.ps1 script
	on the S1 and S2 computers:

		invoke-command -computername S1, S2 -filepath C:\Test\Sample.ps1

	The results of the script are returned to the local computer. You
	do not need to copy any files.
  

 HOW TO STOP A REMOTE COMMAND

   To interrupt a command, press CTRL+C. The interrupt request is
   passed to the remote computer where it terminates the remote command.



FOR MORE INFORMATION

	-- For information about the system requirements for remoting,
	 see about_Remote_Requirements.

	-- For help in formatting remote output, see about_Remote_Output.

	-- For information about how remoting works, how to manage remote
	 data, special configurations, security issues, and other frequently
	 asked questions, see about_Remote_FAQ.

	-- For help in resolving remoting errors, see about_Remote_Troubleshooting.

	-- For information about PSSessions and persistent connections, see
	 about_PSSessions.

	-- For information about Windows PowerShell background jobs, see
	 about_Jobs.

KEYWORDS
	about_Remoting

SEE ALSO
	about_PSSessions
	about_Remote_Requirements
	about_Remote_FAQ
	about_Remote_TroubleShooting
	Enter-PSSession 
	Invoke-Command
	New-PSSession