Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Описывает сеансы 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 и добавлять и создавать элементы. Однако в отличие от сеанса, который запускается автоматически, вы можете управлять создаваемыми psSessions. Вы можете получить, создать, настроить и удалить их, отключить и повторно подключиться к ним, а также выполнить несколько команд в одной и той же PSSession. PSSession остается доступным до тех пор, пока вы не удалите его или пока он не истечет.
Как правило, вы создаете PSSession для выполнения ряда связанных команд на удаленном компьютере. При создании PSSession на удаленном компьютере PowerShell устанавливает постоянное подключение к удаленному компьютеру для поддержки сеанса.
Если вы используете параметр ComputerName командлета Invoke-Command или Enter-PSSession для выполнения удаленной команды или запуска интерактивного сеанса, PowerShell создает временный сеанс на удаленном компьютере и закрывает сеанс сразу после завершения команды или сразу после завершения интерактивного сеанса. Вы не можете контролировать эти временные сеансы, и их нельзя использовать для нескольких команд или одного интерактивного сеанса.
В PowerShell текущий сеанс — это сеанс, в который вы работаете. Текущий сеанс может ссылаться на любой сеанс, включая временный или PSSession.
Зачем использовать PSSession?
Используйте PSSession, если требуется постоянное подключение к удаленному компьютеру. С помощью PSSession можно выполнять ряд команд, которые совместно используют данные, такие как значение переменных, содержимое функции или определение псевдонима.
Удаленные команды можно запускать без создания PSSession. Используйте параметр ComputerName командлетов с поддержкой удаленного доступа для выполнения одной команды или ряда несвязанных команд на одном или нескольких компьютерах.
При использовании параметра ComputerNameInvoke-Command или Enter-PSSessionPowerShell устанавливает временное подключение к удаленному компьютеру, а затем закрывает подключение после завершения команды.
Все создаваемые элементы данных теряются при закрытии соединения.
Другие командлеты с параметром ComputerName, например Get-Eventlog и Get-WmiObject, используют различные технологии удаленного взаимодействия для сбора данных. Ни один из них не создает постоянное соединение, например PSSession.
Создание 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
Создание 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 по идентификатору и сохраняет её в переменной $ps01.
$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 Get-PSSession получает только psSessions, созданные в текущем сеансе. Он не получает PSSessions, созданные в других сеансах или на других компьютерах, даже если эти сеансы подключены к локальному компьютеру и выполняют команды на нем.
Выполнение команд в PSSession
Чтобы выполнить команду в одной или нескольких PSSessions, используйте командлет 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 с удаленного компьютера, в командлете используйте параметр 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: возвращает PSSessions в текущем сеансе
- New-PSSession: Создает новую сессию PSSession на локальном или удаленном компьютере.
- Receive-PSSession: получает результаты команд, выполнявшихся в отключенном сеансе.
- Remove-PSSession: удаляет PSSessions в текущем сеансе
Заметка
Отключенные сеансы поддерживаются только в Windows. Командлеты Connect-PSSession, Disconnect-PSSessionи Receive-PSSession доступны только в Windows. Дополнительные сведения об отключенных сеансах см. в about_Remote_Disconnected_Session.
Узнать больше
Дополнительные сведения о PSSessions см. в about_PSSession_Details.
См. также
PowerShell