I am writing a script to stop and start services in two remote servers. Here's my question,
in my script I did new-pssession and used invoke-command to stop and start services.
Do I need to use enter-pssession?
Updates: Here's what my script needs to do.
on server1, I need to stop and start two services. on server2, I need to stop and start just one service.
# foreach for server 1 since I need to stop and start two services. created a session for server 1
foreach($service in $services){
$session = New-PSSession -ComputerName $serverName -Credential $cred
Invoke-Command -Session $session -ScriptBlock {param($service) Stop-Service -Name $service} -ArgumentList $service
remove-pssession -session $session
}
# created a session for server 2. I need to stop and start just one service in server 2
$session = New-PSSession -ComputerName $serverName -Credential $cred
Invoke-Command -Session $session -ScriptBlock {param($service) Stop-Service -Name $service} -ArgumentList $service
remove-pssession -session $session
is this the right way to do it?
The Enter-PSSession cmdlet starts an interactive session with a single remote computer.
Enter-PSSession
- Since this is an interactive session you type what you want at the console and immediately see the results in the console.(just like CMD). If its just 2 servers then you can useenter-pssession
but it is always going to be serial meaning you do something on one server then you move onto another.New-PSSession
- creates a persistent connection to a remote server and is generally used when you have a series of commands to run on multiple servers at various stages of a larger script\workflow.Example:
if you just want to stop\start a couple of services then you can do this without opening a persistent connection.
Example: