about_PSSessions

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

Описание сеансов PowerShell (PSSessions) и установка постоянного подключения к удаленному компьютеру.

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

Для выполнения команд PowerShell на удаленном компьютере можно использовать параметр ComputerName командлета или создать сеанс PowerShell (PSSession) и выполнить команды в PSSession.

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

Вы также можете создать PSSession на локальном компьютере и выполнить на нем команды. Локальная служба PSSession использует инфраструктуру удаленного взаимодействия PowerShell для создания и обслуживания PSSession.

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

В этом разделе объясняется, как создавать, использовать, получать и удалять psSessions. Дополнительные сведения см. в разделе about_PSSession_Details.

Примечание. PsSessions используют инфраструктуру удаленного взаимодействия PowerShell. Чтобы использовать PSSessions, локальный и удаленный компьютеры должны быть настроены для удаленного взаимодействия. Дополнительные сведения см. в разделе about_Remote_Requirements.

В Windows Vista и более поздних версиях Windows для создания PSSession на локальном компьютере необходимо запустить PowerShell с параметром "Запуск от имени администратора".

Что такое сеанс?

Сеанс — это среда, в которой выполняется PowerShell.

При каждом запуске PowerShell создается сеанс, и в сеансе можно выполнять команды. Вы также можете добавлять в сеанс элементы, например модули и оснастки, а также создавать элементы, такие как переменные, функции и псевдонимы. Эти элементы существуют только в сеансе и удаляются по завершении сеанса.

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

Как правило, psSession создается для выполнения ряда связанных команд на удаленном компьютере. При создании PSSession на удаленном компьютере PowerShell устанавливает постоянное подключение к удаленному компьютеру для поддержки сеанса.

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

В PowerShell текущий сеанс — это сеанс, в который вы работаете. Текущий сеанс может ссылаться на любой сеанс, включая временный сеанс или PSSession.

Зачем использовать PSSession?

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

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

При использовании параметра Invoke-CommandComputerName или Enter-PSSessionPowerShell устанавливает временное подключение к удаленному компьютеру, а затем закрывает подключение по завершении команды. Все создаваемые элементы данных теряются при закрытии соединения.

Другие командлеты с параметром ComputerName , такие как Get-Eventlog и Get-WmiObject, используют различные технологии удаленного взаимодействия для сбора данных. Никто не создает постоянное подключение, например PSSession.

Как Create PSSession

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

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

New-PSSession -ComputerName Server01

При отправке команды New-PSSession создает PSSession и возвращает объект, представляющий psSession. Вы можете сохранить объект в переменной при создании PSSession или использовать Get-PSSession команду, чтобы получить PSSession позже.

Например, следующая команда создает новый сеанс PSSession на компьютере Server01 и сохраняет полученный объект в переменной $ps.

$ps = New-PSSession -ComputerName Server01

Как Create PSSessions на нескольких компьютерах

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

Например, чтобы создать сеансы PSSessions на компьютерах Server01, Server02 и Server03, введите следующее:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession создает по одному сеансу PSSession на каждом из удаленных компьютеров.

Как получить PSSessions

Чтобы получить сеансы PSSessions, созданные в текущем сеансе Get-PSSession , используйте командлет без параметра ComputerName . Get-PSSession возвращает тот же тип объекта, который New-PSSession возвращает .

Следующая команда возвращает все сеансы PSSessions, созданные в текущем сеансе.

Get-PSSession

Отображение по умолчанию psSessions показывает их идентификатор и отображаемое имя по умолчанию. При создании сеанса можно назначить альтернативное отображаемое имя.

Id   Name       ComputerName    State    ConfigurationName
---  ----       ------------    -----    ---------------------
1    Session1   Server01        Opened   Microsoft.PowerShell
2    Session2   Server02        Opened   Microsoft.PowerShell
3    Session3   Server03        Opened   Microsoft.PowerShell

Вы также можете сохранить PSSessions в переменной. Следующая команда получает psSessions и сохраняет их в переменной $ps 123.

$ps123 = Get-PSSession

При использовании командлетов PSSession можно ссылаться на PSSession по его идентификатору, имени или идентификатору экземпляра (GUID). Следующая команда получает PSSession по его идентификатору и сохраняет его в переменной $ps 01.

$ps01 = Get-PSSession -Id 1

Начиная с Windows PowerShell 3.0, psSessions поддерживаются на удаленном компьютере. Чтобы получить сеансы PSSessions, созданные на определенных удаленных компьютерах, используйте параметр ComputerName командлета Get-PSSession . Следующая команда возвращает сеансы PSSessions, созданные на удаленном компьютере Server01. Сюда входят сеансы PSSessions, созданные в текущем сеансе и в других сеансах на локальном компьютере или других компьютерах.

Get-PSSession -ComputerName Server01

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

Выполнение команд в PSSession

Чтобы выполнить команду в одном или нескольких сеансах PSSession, используйте Invoke-Command командлет . Используйте параметр Session, чтобы указать psSessions, и параметр ScriptBlock для указания команды.

Например, чтобы выполнить Get-ChildItem команду ("dir") в каждом из трех сеансов PSSessions, сохраненных в переменной $ps 123, введите следующее:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

Удаление psSessions

Завершив работу с PSSession, используйте Remove-PSSession командлет , чтобы удалить psSession и освободить используемые ресурсы.

Remove-PSSession -Session $ps

или

Remove-PSSession -Id 1

Чтобы удалить PSSession с удаленного компьютера, используйте параметр ComputerName командлета Remove-PSSession .

Remove-PSSession -ComputerName Server01 -Id 1

Если не удалить psSession, psSession остается доступным для использования до истечения времени ожидания.

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

Командлеты PSSession

Чтобы получить список командлетов PSSession, введите:

Get-Help *-PSSession
  • Connect-PSSession: подключает PSSession к текущему сеансу.
  • Disconnect-PSSession: отключает PSSession от текущего сеанса.
  • Enter-PSSession: запуск интерактивного сеанса
  • Exit-PSSession: завершение интерактивного сеанса
  • Get-PSSession: возвращает сеансы PSSession в текущем сеансе.
  • New-PSSession: создает новый psSession на локальном или удаленном компьютере.
  • Receive-PSSession: возвращает результаты команд, которые выполнялись в отключенном сеансе.
  • Remove-PSSession: удаляет сеансы PSSession в текущем сеансе.

Примечание

Отключенные сеансы поддерживаются только в Windows. Командлеты Connect-PSSession, Disconnect-PSSessionи Receive-PSSession доступны только в Windows. Дополнительные сведения об отключенных сеансах см. в разделе about_Remote_Disconnected_Session

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

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

См. также раздел