введите команду вызова pssession, когда использовать?

Я пишу скрипт для остановки и запуска служб на двух удаленных серверах. Вот мой вопрос,

в моем сценарии я сделал new-pssession и использовал команду вызова для остановки и запуска служб.

Нужно ли использовать enter-pssession?

Обновления. Вот что нужно сделать моему сценарию.

на server1 мне нужно остановить и запустить две службы. на server2 мне нужно остановить и запустить только одну службу.

# 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

это правильный способ сделать это?


person Ninja    schedule 05.01.2016    source источник
comment
сохранение (удаленного) состояния? не открывает и не закрывает новое соединение? -- как в: должен ли я запускать новый сеанс консоли PS (локально) для каждой команды? PS: ... без понятия, просто догадываюсь. здесь ламер играет с powershell для удовольствия, посмотрим, что скажут гуру :)   -  person Jaqueline Vanek    schedule 05.01.2016


Ответы (2)


Enter-PSSession — Поскольку это интерактивный сеанс, вы вводите то, что хотите, в консоли и сразу же видите результаты в консоли (точно так же, как CMD). Если это всего лишь 2 сервера, вы можете использовать enter-pssession, но это всегда будет последовательно, что означает, что вы делаете что-то на одном сервере, а затем переходите на другой.

New-PSSession — создает постоянное соединение с удаленным сервером и обычно используется, когда у вас есть ряд команд для запуска на нескольких серверах на разных этапах более крупного сценария\рабочего процесса.

Пример:

$s1, $s2 = New-PSSession -ComputerName Server1,Server2
Get-Service -Name Bits                #on localhost
Invoke-Command -session $s1 -scriptblock { # remote commands here }
Get-Process                           #on localhost
Invoke-Command -session $s1 -scriptblock { # remote commands here }
Remove-pSSession -session $s1 #on localhost

если вы просто хотите остановить\запустить несколько служб, вы можете сделать это, не открывая постоянное соединение.

Пример:

Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {Stop-Service -Name Bits}
person Kiran    schedule 06.01.2016
comment
Привет Киран, большое спасибо за вашу помощь. У меня есть вопрос при запуске Invoke-Command для остановки служб на удаленном сервере. Invoke-Command -Session $remoteSession -ScriptBlock {param($service) Stop-Service -Name $service} -ArgumentList $service, когда я запускаю это, я всегда получаю [ПРЕДУПРЕЖДЕНИЕ], ожидая завершения службы "blahblah"... is есть способ не отображать это предупреждающее сообщение? Я попробовал warningaction - продолжить молча и попытался установить warningpreference = 'silentlycontinue', но ни один из них, похоже, не работает - person Ninja; 06.01.2016
comment
добро пожаловать, Джей... если вы установите stop-service bits -warning 'Silentlycontinue', то вы не должны видеть никаких предупреждающих сообщений, потому что это переопределяет глобальные настройки... я тестировал это на своей машине с powershell V4, и оно работает так, как ожидалось, поэтому не знаю, почему оно не работает для вас. ..вы используете PS V2? - person Kiran; 07.01.2016

Командлет Enter-PSSession запускает интерактивный сеанс с одним удаленным компьютером.

person Adrian Rodriguez    schedule 05.01.2016
comment
это как бы очевидно, не так ли? вопрос, кажется, о том, когда сначала запустить удаленный сеанс, а когда просто выполнить последовательность команд вызова - person Jaqueline Vanek; 05.01.2016
comment
ой, не заметил часть ENTER-pssession, пожалуйста, игнорируйте меня, извините - person Jaqueline Vanek; 05.01.2016
comment
Спасибо, Адриан, я только что обновил свой пост. Не могли бы вы взглянуть? Спасибо - person Ninja; 06.01.2016