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


about_PSSession_Details

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

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

Подробное описание

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

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

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

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

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

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

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

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

Сведения о PSSessions

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

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

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

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

Когда мне нужен PSSession?

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

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

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

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

Как создать PSSession?

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

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

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

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

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

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

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

Get-PSSession -ComputerName Server02

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также