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


about_PSSession_Details

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_PSSession_Details

КРАТКОЕ ОПИСАНИЕ

Подробные сведения о сеансах Windows PowerShell и их роли в удаленных командах.

ПОДРОБНОЕ ОПИСАНИЕ

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

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

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

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

О СЕАНСАХ

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

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

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

О СЕАНСАХ PSSESSION

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

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

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

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

В КАКИХ СЛУЧАЯХ ТРЕБУЕТСЯ СЕАНС PSSESSION?

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

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

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

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

КАК СОЗДАТЬ СЕАНС PSSESSION?

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

СЕАНС PSSESSION МОЖНО СОЗДАТЬ НА ЛЮБОМ КОМПЬЮТЕРЕ?

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

МОЖНО ЛИ ПРОСМОТРЕТЬ МОИ СЕАНСЫ PSSESSION В ДРУГИХ СЕАНСАХ?

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

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

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

      Get-PSSession -ComputerName Server02

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

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

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

МОЖНО ЛИ УВИДЕТЬ СЕАНСЫ PSSESSION, СОЗДАННЫЕ ДРУГИМИ ПОЛЬЗОВАТЕЛЯМИ, НА МОЕМ КОМПЬЮТЕРЕ?

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

МОЖНО ЛИ ПОДКЛЮЧИТЬСЯ К СЕАНСУ PSSESSION С ДРУГОГО КОМПЬЮТЕРА?

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

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

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

Дополнительные сведения см. в разделе about_Remote_Disconnected_Sessions (https://go.microsoft.com/fwlink/?LinkID=252847).

ЧТО ПРОИЗОЙДЕТ С СЕАНСОМ PSSESSION ПРИ ПРЕКРАЩЕНИИ РАБОТЫ КОМПЬЮТЕРА?

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

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

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

Дополнительные сведения см. в разделе about_Remote_Disconnected_Sessions (https://go.microsoft.com/fwlink/?LinkID=252847).

МОЖНО ЛИ ЗАПУСТИТЬ ФОНОВОЕ ЗАДАНИЕ В СЕАНСЕ PSSESSION?

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

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

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

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

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

МОЖНО ЛИ ЗАПУСТИТЬ ИНТЕРАКТИВНЫЙ СЕАНС?

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

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

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

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

НУЖНО ЛИ УДАЛЯТЬ СЕАНСЫ PSSESSION?

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

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

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

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

ЯВЛЯЮТСЯ ЛИ ВСЕ СЕАНСЫ И СЕАНСЫ PSSESSION СХОЖИМИ?

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

СМ. ТАКЖЕ

about_Jobs

about_PSSessions

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Invoke-Command

New-PSSession

Get-PSSession

Remove-PSSession

Enter-PSSession

Exit-PSSession