О PSSessionAbout PSSessions

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

Описывает сеансы Windows PowerShell (PSSession) и объясняет, как установить постоянное подключение к удаленному компьютеру.Describes Windows PowerShell sessions (PSSessions) and explains how to establish a persistent connection to a remote computer.

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

Для выполнения команд Windows PowerShell на удаленном компьютере можно использовать параметр ComputerName командлета или создать сеанс Windows PowerShell (PSSession) и выполнить команды в PSSession.To run Windows PowerShell commands on a remote computer, you can use the ComputerName parameter of a cmdlet, or you can create a Windows PowerShell session (PSSession) and run commands in the PSSession.

При создании сеанса PSSession служба Windows PowerShell устанавливает постоянное подключение к удаленному компьютеру.When you create a PSSession, Windows PowerShell establishes a persistent connection to the remote computer. Используйте PSSession для выполнения серии связанных команд на удаленном компьютере.Use a PSSession to run a series of related commands on a remote computer. Команды, выполняемые в одном сеансе PSSession, могут совместно использовать данные, такие как значения переменных, псевдонимов и функций.Commands that run in the same PSSession can share data, such as the values of variables, aliases, and functions.

Можно также создать сеанс PSSession на локальном компьютере и выполнить в нем команды.You can also create a PSSession on the local computer and run commands in it. Локальный сеанс PSSession использует инфраструктуру удаленного взаимодействия Windows PowerShell для создания и обслуживания PSSession.A local PSSession uses the Windows PowerShell remoting infrastructure to create and maintain the PSSession.

Начиная с Windows PowerShell 3,0, PSSession не зависят от сеансов, в которых они созданы.Beginning in Windows PowerShell 3.0, PSSessions are independent of the sessions in which they are created. Активные PSSession хранятся на удаленном компьютере (или на удаленном компьютере или на стороне сервера).Active PSSessions are maintained on the remote computer (or the computer at the remote end or "server-side" of the connection). В результате вы можете отключиться от сеанса PSSession и повторно подключиться к нему позже с того же компьютера или с другого компьютера.As a result, you can disconnect from the PSSession and reconnect to it at a later time from the same computer or from a different computer.

В этом разделе объясняется, как создавать, использовать, получать и удалять PSSession.This topic explains how to create, use, get, and delete PSSessions. Дополнительные сведения см. в разделе about_PSSession_Details.For more advanced information, see about_PSSession_Details.

Примечание. PSSession использует инфраструктуру удаленного взаимодействия Windows PowerShell.Note: PSSessions use the Windows PowerShell remoting infrastructure. Чтобы использовать PSSession, на локальном и удаленном компьютерах необходимо настроить удаленное взаимодействие.To use PSSessions, the local and remote computers must be configured for remoting. Дополнительные сведения см. в разделе about_Remote_Requirements.For more information, see about_Remote_Requirements.

В Windows Vista и более поздних версиях Windows для создания сеанса PSSession на локальном компьютере необходимо запустить Windows PowerShell с параметром "Запуск от имени администратора".In Windows Vista and later versions of Windows, to create a PSSession on a local computer, you must start Windows PowerShell with the "Run as administrator" option.

Что такое сеанс?What Is a Session?

Сеанс — это среда, в которой выполняется Windows PowerShell.A session is an environment in which Windows PowerShell runs.

Каждый раз при запуске Windows PowerShell создается сеанс, а в сеансе можно выполнять команды.Each time you start Windows PowerShell, a session is created for you, and you can run commands in the session. Можно также добавлять элементы в сеанс, например модули и оснастки, а также создавать элементы, такие как переменные, функции и псевдонимы.You can also add items to your session, such as modules and snap-ins, and you can create items, such as variables, functions, and aliases. Эти элементы существуют только в сеансе и удаляются по окончании сеанса.These items exist only in the session and are deleted when the session ends.

Кроме того, можно создавать управляемые пользователем сеансы, известные как "сеансы Windows PowerShell" или "PSSession" на локальном компьютере или на удаленном компьютере.You can also create user-managed sessions, known as " Windows PowerShell sessions" or "PSSessions," on the local computer or on a remote computer. Как и сеанс по умолчанию, можно выполнять команды в PSSession, а также добавлять и создавать элементы.Like the default session, you can run commands in a PSSession and add and create items. Однако в отличие от сеанса, который запускается автоматически, вы можете управлять создаваемыми PSSession.However, unlike the session that starts automatically, you can control the PSSessions that you create. Вы можете получать, создавать, настраивать и удалять их, отключать и повторно подключаться к ним, а также выполнять несколько команд в одном сеансе PSSession.You can get, create, configure, and remove them, disconnect and reconnect to them, and run multiple commands in the same PSSession. Сеанс PSSession остается доступным до тех пор, пока вы не удалите его или не истечет время ожидания.The PSSession remains available until you delete it or it times out.

Как правило, сеанс PSSession создается для выполнения последовательности связанных команд на удаленном компьютере.Typically, you create a PSSession to run a series of related commands on a remote computer. При создании сеанса PSSession на удаленном компьютере Windows PowerShell устанавливает постоянное подключение к удаленному компьютеру для его поддержки.When you create a PSSession on a remote computer, Windows PowerShell establishes a persistent connection to the remote computer to support the session.

Если вы используете параметр ComputerName Invoke-Command командлета или для запуска Enter-PSSession интерактивного сеанса, Windows PowerShell создает временный сеанс на удаленном компьютере и закрывает его сразу же после завершения интерактивного сеанса.If you use the ComputerName parameter of the Invoke-Command or Enter-PSSession cmdlet to run a remote command or to start an interactive session, Windows PowerShell creates a temporary session on the remote computer and closes the session as soon as the command is complete or as soon as the interactive session ends. Вы не можете управлять этими временными сеансами, и их нельзя использовать для нескольких команд или единого интерактивного сеанса.You cannot control these temporary sessions, and you cannot use them for more than a single command or a single interactive session.

В Windows PowerShell «текущий сеанс» — это сеанс, в котором вы работаете.In Windows PowerShell, the "current session" is the session that you are working in. "Текущий сеанс" может ссылаться на любой сеанс, включая временный сеанс или PSSession.The "current session" can refer to any session, including a temporary session or a PSSession.

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

Используйте сеанс PSSession, если требуется постоянное подключение к удаленному компьютеру.Use a PSSession when you need a persistent connection to a remote computer. С помощью PSSession можно выполнять ряд команд, которые совместно используют данные, такие как значения переменных, содержимое функции или определение псевдонима.With a PSSession, you can run a series of commands that share data, such as the value of variables, the contents of a function, or the definition of an alias.

Удаленные команды можно выполнять без создания сеанса PSSession.You can run remote commands without creating a PSSession. Используйте параметр ComputerName командлетов с удаленным включением для выполнения одной команды или ряда несвязанных команд на одном или нескольких компьютерах.Use the ComputerName parameter of remote-enabled cmdlets to run a single command or a series of unrelated commands on one or many computers.

При использовании параметра ComputerName в Invoke-Command или Enter-PSSession Windows PowerShell устанавливает временное подключение к удаленному компьютеру, а затем закрывает подключение сразу после завершения выполнения команды.When you use the ComputerName parameter of Invoke-Command or Enter-PSSession, Windows PowerShell establishes a temporary connection to the remote computer and then closes the connection as soon as the command is complete. При закрытии соединения все создаваемые элементы данных теряются.Any data elements that you create are lost when the connection is closed.

Другие командлеты, имеющие параметр ComputerName , например Get-Eventlog и Get-WmiObject , используют разные технологии удаленного взаимодействия для сбора данных.Other cmdlets that have a ComputerName parameter, such as Get-Eventlog and Get-WmiObject, use different remoting technologies to gather data. Нет — создать постоянное подключение, например PSSession.None create a persistent connection like a PSSession.

Создание сеанса PSSessionHow to Create a PSSession

Чтобы создать сеанс PSSession, используйте New-PSSession командлет.To create a PSSession, use the New-PSSession cmdlet. Чтобы создать сеанс PSSession на удаленном компьютере, используйте параметр ComputerName New-PSSession командлета.To create the PSSession on a remote computer, use the ComputerName parameter of the New-PSSession cmdlet.

Например, следующая команда создает новый сеанс PSSession на компьютере Server01.For example, the following command creates a new PSSession on the Server01 computer.

New-PSSession -ComputerName Server01

При отправке команды New-PSSession создает сеанс PSSession и возвращает объект, представляющий сеанс PSSession.When you submit the command, New-PSSession creates the PSSession and returns an object that represents the PSSession. Объект можно сохранить в переменной при создании сеанса PSSession или с помощью Get-PSSession команды, чтобы получить сеанс PSSession позднее.You can save the object in a variable when you create the PSSession, or you can use a Get-PSSession command to get the PSSession at a later time.

Например, следующая команда создает новый сеанс PSSession на компьютере Server01 и сохраняет полученный объект в переменной $ps.For example, the following command creates a new PSSession on the Server01 computer and saves the resulting object in the $ps variable.

$ps = New-PSSession -ComputerName Server01

Создание PSSession на нескольких компьютерахHow to Create PSSessions on Multiple Computers

Чтобы создать PSSession на нескольких компьютерах, используйте параметр ComputerName New-PSSession командлета.To create PSSessions on multiple computers, use the ComputerName parameter of the New-PSSession cmdlet. Введите имена удаленных компьютеров в виде списка с разделителями-запятыми.Type the names of the remote computers in a comma-separated list.

Например, чтобы создать PSSession на компьютерах Server01, Server02 и Server03, введите:For example, to create PSSessions on the Server01, Server02, and Server03 computers, type:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession создает один сеанс PSSession на каждом из удаленных компьютеров.New-PSSession creates one PSSession on each of the remote computers.

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

Чтобы получить PSSession, созданные в текущем сеансе, используйте Get-PSSession командлет без параметра ComputerName .To get the PSSessions that were created in your current session, use the Get-PSSession cmdlet without the ComputerName parameter. Get-PSSession возвращает тот же тип объекта, который New-PSSession возвращает.Get-PSSession returns the same type of object that New-PSSession returns.

Следующая команда получает все PSSession, созданные в текущем сеансе.The following command gets all the PSSessions that were created in the current session.

Get-PSSession

По умолчанию в PSSession отображается их идентификатор и отображаемое имя по умолчанию.The default display of the PSSessions shows their ID and a default display name. При создании сеанса можно назначить альтернативное отображаемое имя.You can assign an alternate display name when you create the session.

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

Можно также сохранить PSSession в переменной.You can also save the PSSessions in a variable. Следующая команда получает PSSession и сохраняет их в $ переменной ps123.The following command gets the PSSessions and saves them in the $ps123 variable.

$ps123 = Get-PSSession

При использовании командлетов PSSession можно ссылаться на сеанс PSSession по его ИДЕНТИФИКАТОРу, по имени или ИДЕНТИФИКАТОРу экземпляра (идентификатор GUID).When using the PSSession cmdlets, you can refer to a PSSession by its ID, by its name, or by its instance ID (a GUID). Следующая команда получает сеанс PSSession по его ИДЕНТИФИКАТОРу и сохраняет его в $ переменной ps01.The following command gets a PSSession by its ID and saves it in the $ps01 variable.

$ps01 = Get-PSSession -Id 1

Начиная с Windows PowerShell 3,0, PSSession хранятся на удаленном компьютере.Beginning in Windows PowerShell 3.0, PSSessions are maintained on the remote computer. Чтобы получить PSSession, созданные на определенных удаленных компьютерах, используйте параметр ComputerName Get-PSSession командлета.To get PSSessions that you created on particular remote computers, use the ComputerName parameter of the Get-PSSession cmdlet. Следующая команда получает PSSession, созданный на удаленном компьютере Server01.The following command gets the PSSessions that you created on the Server01 remote computer. Сюда входят PSSession, созданные в текущем сеансе и в других сеансах на локальном компьютере или на других компьютерах.This includes PSSessions created in the current session and in other sessions on the local computer or other computers.

Get-PSSession -ComputerName Server01

В Windows PowerShell 2,0 Get-PSSession возвращает только PSSession, созданные в текущем сеансе.In Windows PowerShell 2.0, Get-PSSession gets only the PSSessions that were created in the current session. Он не получает PSSession, которые были созданы в других сеансах или на других компьютерах, даже если сеансы подключены к и работают с командами на локальном компьютере.It does not get PSSessions that were created in other sessions or on other computers, even if the sessions are connected to and are running commands on the local computer.

Выполнение команд в PSSessionHow to Run Commands in a PSSession

Чтобы выполнить команду в одном или нескольких PSSession, используйте Invoke-Command командлет.To run a command in one or more PSSessions, use the Invoke-Command cmdlet. Используйте параметр Session, чтобы указать PSSession и параметр ScriptBlock для указания команды.Use the Session parameter to specify the PSSessions and the ScriptBlock parameter to specify the command.

Например, чтобы выполнить Get-ChildItem команду ("Dir") в каждой из трех PSSession, сохраненных в переменной $ps 123, введите:For example, to run a Get-ChildItem ("dir") command in each of the three PSSessions saved in the $ps123 variable, type:

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

Удаление PSSessionHow to Delete PSSessions

По завершении работы с PSSession используйте Remove-PSSession командлет, чтобы удалить PSSession и освободить используемые им ресурсы.When you are finished with the PSSession, use the Remove-PSSession cmdlet to delete the PSSession and to release the resources that it was using.

Remove-PSSession -Session $ps

oror

Remove-PSSession -Id 1

Чтобы удалить сеанс PSSession с удаленного компьютера, используйте параметр ComputerName Remove-PSSession командлета.To remove a PSSession from a remote computer, use the ComputerName parameter of the Remove-PSSession cmdlet.

Remove-PSSession -ComputerName Server01 -Id 1

Если не удалить PSSession, то сеанс PSSession остается доступным для использования до истечения времени ожидания.If you do not delete the PSSession, the PSSession remains available for use until it times out.

Можно также использовать параметр IdleTimeout New-PSSessionOption командлета, чтобы установить срок действия для неактивного сеанса PSSession.You can also use the IdleTimeout parameter of the New-PSSessionOption cmdlet to set an expiration time for an idle PSSession. Дополнительные сведения см. в разделе New-PSSessionOption.For more information, see New-PSSessionOption.

Командлеты PSSessionThe PSSession Cmdlets

Чтобы получить список командлетов PSSession, введите:For a list of PSSession cmdlets, type:

Get-Help *-PSSession
  • Connect-PSSession: подключает сеанс PSSession к текущему сеансуConnect-PSSession: Connects a PSSession to the current session
  • Disconnect-PSSession: отключает сеанс PSSession от текущего сеансаDisconnect-PSSession: Disconnects a PSSession from the current session
  • Enter-PSSession: запускает интерактивный сеансEnter-PSSession: Starts an interactive session
  • Exit-PSSession: завершает интерактивный сеансExit-PSSession: Ends an interactive session
  • Get-PSSession: получает PSSession в текущем сеансеGet-PSSession: Gets the PSSessions in the current session
  • New-PSSession: создает новый сеанс PSSession на локальном или удаленном компьютере.New-PSSession: Creates a new PSSession on a local or remote computer
  • Receive-PSSession: получение результатов команд, которые выполнялись в отключенном сеансеReceive-PSSession: Gets the results of commands that ran in a disconnected session
  • Remove-PSSession: удаляет PSSession в текущем сеансеRemove-PSSession: Deletes the PSSessions in the current session

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

Дополнительные сведения о PSSession см. в разделе about_PSSession_Details.For more information about PSSessions, see about_PSSession_Details.

См. также:See Also

about_Remoteabout_Remote

about_Remote_Disconnected_Sessionsabout_Remote_Disconnected_Sessions

about_Remote_Requirementsabout_Remote_Requirements

Connect-PSSessionConnect-PSSession

Disconnect-PSSessionDisconnect-PSSession

Enter-PSSessionEnter-PSSession

Exit-PSSession;Exit-PSSession

Get-PSSessionGet-PSSession

Invoke-CommandInvoke-Command

New-PSSessionNew-PSSession

Remove-PSSessionRemove-PSSession