Поделиться через


Сведения о PSSession

Краткое описание

Содержит подробные сведения о сеансах PowerShell и роли, которую они играют в удаленных командах.

Полное описание

Сеанс — это среда, в которой выполняется PowerShell. Сеанс создается при каждом запуске PowerShell. Вы можете создать дополнительные сеансы под названием "Сеансы PowerShell" или "PSSessions" на компьютере или другом компьютере.

В отличие от сеансов, создаваемых PowerShell, вы управляете создаваемыми сеансами PSSessions и управляете ими.

PsSessions играют важную роль в удаленных вычислениях. При создании PSSession, подключенного к удаленному компьютеру, PowerShell устанавливает постоянное подключение к удаленному компьютеру для поддержки PSSession. PsSession можно использовать для выполнения ряда команд, функций и скриптов, которые совместно используют данные.

В этом разделе приводятся подробные сведения о сеансах и сеансах PSSessions в PowerShell. Основные сведения о задачах, которые можно выполнять с помощью сеансов, см . в разделе about_PSSessions.

Сведения о сеансах

Технически сеанс — это среда выполнения, в которой выполняется PowerShell. Каждый сеанс включает экземпляр подсистемы System.Management.Automation и ведущее приложение, в котором выполняется PowerShell. Ведущее приложение может быть знакомой консолью PowerShell или другой программой, которая выполняет команды, например Cmd.exe, или программой, созданной для размещения PowerShell, например Windows PowerShell интегрированной среде сценариев (ISE). С точки зрения Windows сеанс — это процесс Windows на целевом компьютере.

Каждый сеанс настраивается независимо. Он включает собственные свойства, собственную политику выполнения и собственные профили. Среда, существующая при создании сеанса, сохраняется в течение всего времени существования, даже если вы изменяете среду на компьютере. Все сеансы создаются в глобальной область, даже в сеансах, создаваемых в скрипте.

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

Сведения о PSSessions

Сеанс создается при каждом запуске PowerShell. Кроме того, PowerShell создает временные сеансы для выполнения отдельных команд. Однако вы также можете создавать сеансы (называемые сеансами PowerShell или PSSessions), которыми вы управляете и управляете.

Сеансы PSSessions имеют решающее значение для удаленных команд. Если вы используете параметр Invoke-CommandComputerName командлетов или Enter-PSSession , PowerShell устанавливает временный сеанс для выполнения команды, а затем закрывает сеанс сразу после завершения команды или интерактивного сеанса.

Однако если вы используете New-PSSession командлет для создания PSSession, PowerShell установит постоянный сеанс на удаленном компьютере, в котором можно выполнять несколько команд или интерактивных сеансов. Созданные сеансы PSSessions остаются открытыми и доступными для использования, пока вы не удалите их или пока не закроете сеанс, в котором они были созданы.

При создании PSSession на удаленном компьютере система создает процесс PowerShell на удаленном компьютере и устанавливает подключение локального компьютера к процессу на удаленном компьютере. При создании PSSession на локальном компьютере на локальном компьютере создаются как новый процесс, так и подключения.

Когда требуется PSSession?

Командлеты Invoke-Command и Enter-PSSession имеют параметры ComputerName и Session . Вы можете использовать любой из этих вариантов для выполнения удаленной команды.

Используйте параметр ComputerName для выполнения одной команды или ряда несвязанных команд на одном или нескольких компьютерах.

Для выполнения команд, которые совместно используют данные, требуется постоянное подключение к удаленному компьютеру. В этом случае создайте PSSession, а затем используйте параметр Session для выполнения команд в PSSession.

Многие другие командлеты, которые получают данные с удаленных компьютеров, например Get-Process, Get-Service, Get-EventLogи Get-WmiObject , имеют только параметр ComputerName . Они используют технологии, отличные от удаленного взаимодействия PowerShell, для удаленного сбора данных. Эти командлеты не имеют параметра Session , но вы можете использовать Invoke-Command командлет для выполнения этих команд в PSSession.

Как Create PSSession?

Чтобы создать PSSession, используйте New-PSSession командлет . Вы можете использовать для New-PSSession создания PSSession на локальном или удаленном компьютере.

Можно ли Create PSSession на любом компьютере?

Чтобы создать сеанс PSSession, подключенный к удаленному компьютеру, необходимо настроить компьютер для удаленного взаимодействия в PowerShell. Текущий пользователь должен быть членом группы "Администраторы" на удаленном компьютере, или текущий пользователь должен иметь возможность предоставлять учетные данные члена группы "Администраторы". Дополнительные сведения см. в разделе about_Remote_Requirements.

Можно ли просмотреть мои сеансы PSSessions в других сеансах?

Начиная с Windows PowerShell 3.0 параметр ComputerName командлета Get-PSSession получает сеансы PSSessions, созданные на указанных удаленных компьютерах.

Активные сеансы PSSession поддерживаются на удаленном компьютере (на стороне сервера подключения), и их можно получить из любого сеанса на любом компьютере.

Например, если создать psSession с компьютера Server01 на компьютер Server02, а затем переключиться на компьютер Server03, можно использовать команду, подобную приведенной ниже, для получения сеанса.

Get-PSSession -ComputerName Server02

Даже если вы отключитесь от сеанса, сеанс будет поддерживаться на удаленном компьютере до тех пор, пока вы не удалите его или не истекло время ожидания.

В Windows PowerShell 2.0 можно получить только те psSessions, которые вы создали в текущем сеансе. Вы не можете получить psSessions, созданные в других сеансах.

Дополнительные сведения см. в разделе Get-PSSession.

Можно ли просмотреть сеансы PSSessions, созданные другими пользователями на моем компьютере?

Вы можете получать и управлять только созданными другими пользователями сеансами PSSession, только если вы можете указать учетные данные пользователя, создавшего PSSession, или конфигурация сеанса, которую использует PSSession, включает учетные данные запуска от имени. В противном случае можно получить, подключиться к, использовать и управлять только созданными сеансами PSSession.

Можно ли подключиться к PSSession с другого компьютера?

Начиная с Windows PowerShell 3.0, PSSessions не зависят от сеансов, в которых они были созданы. Активные сеансы PSSessions поддерживаются на компьютере на удаленной или на стороне сервера подключения.

Командлет можно использовать Disconnect-PSSession для отключения от PSSession. PsSession отключается от локального сеанса, но сохраняется на удаленном компьютере. Команды продолжают выполняться в отключенном сеансе PSSession. Вы можете закрыть PowerShell и завершить работу исходного компьютера, не прерывая сеанс PSSession.

Затем, даже через несколько часов, можно использовать Get-PSSession командлет , чтобы получить PSSession, и Connect-PSSession командлет для подключения к PSSession из нового сеанса на другом компьютере.

Дополнительные сведения см. в разделе about_Remote_Disconnected_Sessions.

Что произойдет с моей psSession, если мой компьютер останавливается?

Отключенные сеансы PSSessions не зависят от сеансов, в которых они были созданы. Если отключить PSSession, а затем закрыть исходный компьютер, psSession будет поддерживаться на удаленном компьютере.

Кроме того, PowerShell пытается восстановить активные сеансы PSSession, которые были отключены непреднамеренно, например при перезагрузке компьютера, временном отключении питания или перебое в сети. PowerShell пытается сохранить или восстановить psSession в состоянии "Открыт", если исходный сеанс по-прежнему доступен, или в отключенном состоянии, если это не так.

"Активный" PSSession — это тот, который выполняет команды. Если psSession подключен (не отключен) и команды выполняются в PSSession при закрытии подключенного сеанса, PowerShell пытается сохранить PSSession на удаленном компьютере. Однако если в PSSession не выполняются команды, PowerShell закрывает psSession при закрытии подключенного сеанса.

Дополнительные сведения см. в разделе about_Remote_Disconnected_Sessions.

Можно ли выполнить фоновое задание в PSSession?

Да. Фоновое задание — это команда, которая выполняется асинхронно в фоновом режиме без взаимодействия с текущим сеансом. При отправке команды для запуска задания она возвращает объект задания, но задание продолжает выполняться в фоновом режиме, пока не будет завершено.

Чтобы запустить фоновое задание на локальном компьютере, используйте Start-Job команду . Фоновое задание можно запустить во временном подключении (с помощью параметра ComputerName ) или в PSSession (с помощью параметра Session ).

Чтобы запустить фоновое задание на удаленном компьютере, используйте Invoke-Command командлет с параметром AsJob или Invoke-Command командлет для выполнения Start-Job команды на удаленном компьютере. При использовании параметра AsJob можно использовать параметры ComputerName или Session .

При использовании Invoke-Command для выполнения Start-Job команды необходимо выполнить команду в PSSession. Если используется параметр ComputerName , PowerShell завершает подключение при возврате объекта задания и прерывании задания.

См. дополнительные сведения о заданиях.

Можно ли запустить интерактивный сеанс?

Да. Чтобы запустить интерактивный сеанс на удаленном компьютере, используйте Enter-PSSession командлет . В интерактивном сеансе команды, которые вы вводите, выполняются на удаленном компьютере так же, как если бы вы ввели их непосредственно на удаленном компьютере.

Интерактивный сеанс можно запустить во временном сеансе (с помощью параметра ComputerName ) или в PSSession (с помощью параметра Session ). При использовании PSSession PSSession сохраняет данные из предыдущих команд, а PSSession — все данные, созданные во время интерактивного сеанса, для использования в последующих командах.

После завершения интерактивного сеанса PSSession остается открытым и доступным для использования.

Дополнительные сведения см. в разделах Enter-PSSession и Exit-PSSession.

Нужно ли удалить psSessions?

Да. PSSession — это процесс, который представляет собой автономную среду, которая использует память и другие ресурсы, даже если вы ее не используете. Завершив работу с PSSession, удалите его. Если вы создаете несколько сеансов PSSession, закройте те из них, которые вы не используете, и сохраните только те, которые используются в настоящее время.

Чтобы удалить PSSessions, используйте Remove-PSSession командлет . Он удаляет сеансы PSSessions и освобождает все используемые ресурсы.

Вы также можете использовать параметр IdleTimeOut для New-PSSessionOption закрытия бездействующего сеанса PSSession через указанный интервал. Дополнительные сведения см. в разделе New-PSSessionOption.

Если вы сохраните объект PSSession в переменной, а затем удалите его или дайте ему время ожидания, переменная по-прежнему будет содержать объект PSSession, но PSSession не активна и не может быть использована или исправлена.

Все сеансы и сеансы PSSessions похожи?

Нет. Разработчики могут создавать пользовательские сеансы, включающие только выбранных поставщиков и командлетов. Если команда работает в одном сеансе, но не работает в другом, это может быть связано с тем, что сеанс ограничен.

См. также:

about_Jobs

about_PSSessions

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Invoke-Command

Enter-PSSession

Exit-PSSession;

Get-PSSession

New-PSSession

Remove-PSSession