РАЗДЕЛ about_PSSessions КРАТКОЕ ОПИСАНИЕ Содержит описание сеансов Windows PowerShell (сеансы PSSession) и объяснение, как установить постоянное подключение к удаленному компьютеру. ПОЛНОЕ ОПИСАНИЕ Для выполнения команд Windows PowerShell на удаленном компьютере можно использовать параметр ComputerName командлета или создать сеанс Windows PowerShell (PSSession) и выполнять команды в сеансе PSSession. При создании сеанса PSSession Windows PowerShell создает постоянное подключение к удаленному компьютеру. Используйте сеанс PSSession для выполнения последовательности связанных команд на удаленном компьютере. Команды, выполняемые в рамках одного сеанса PSSession, могут совместно использовать данные, например значения переменных, псевдонимы и функции. Можно также создать сеанс PSSession на локальном компьютере и выполнять команды в нем. Локальный сеанс PSSession использует инфраструктуру удаленного взаимодействия Windows PowerShell для создания и обслуживания сеанса PSSession. В этом разделе описывается, как создавать, использовать, получать и удалять сеансы PSSession. Чтобы получить дополнительные сведения, см. раздел about_PSSession_Details. Примечание. Сеансы PSSession используют инфраструктуру удаленного взаимодействия Windows PowerShell. Чтобы можно было использовать сеансы PSSession, для локального и удаленного компьютеров должно быть настроено удаленное взаимодействие. Дополнительные сведения см. в разделе about_Remote_Requirements. Чтобы создать сеанс PSSession на локальном компьютере под управлением Windows Vista и более поздних версий Windows, необходимо запускать Windows PowerShell командой "Запуск от имени администратора". ЧТО ТАКОЕ СЕАНС? Сеанс - это среда, в которой работает Windows PowerShell. При каждом запуске Windows PowerShell создается сеанс, в котором можно выполнять команды. Можно также добавлять элементы в сеанс, например модули и оснастки, и создавать элементы, например переменные, функции и псевдонимы. Эти элементы будут существовать только в данном сеансе и будут удалены при завершении сеанса. Можно также создавать дополнительные сеансы, известные как "сеансы Windows PowerShell" или "PSSession", на локальном или удаленном компьютере. Как и в обычном сеансе, в PSSession можно выполнять команды, добавлять и создавать элементы для него. Но в отличие от сеанса, запущенного автоматически, пользователь может управлять созданными сеансами PSSession. Пользователь может получать, создавать, настраивать и удалять их; также можно запускать несколько команд в одном сеансе PSSession. Объект PSSession остается открытым и доступным для использования, пока пользователь не удалит его из сеанса. Обычно сеанс PSSession создается для выполнения последовательности связанных команд на удаленном компьютере. При создании PSSession на удаленном компьютере Windows PowerShell устанавливает постоянное подключение к удаленному компьютеру для поддержки этого сеанса. Если используется параметр computerName командлетов Invoke-Command или Enter-PSSession для запуска удаленной команды или создания интерактивного сеанса, Windows PowerShell создает временный сеанс на удаленном компьютере и закрывает его, как только команда или интерактивный сеанс завершаются. Временными сеансами нельзя управлять и нельзя использовать их более чем для одной команды или одного интерактивного сеанса. В Windows PowerShell "текущий сеанс" - это сеанс, в котором работает пользователь. Название "текущий сеанс" может относиться к любому сеансу, в том числе временному сеансу или сеансу PSSession. КОГДА ИСПОЛЬЗОВАТЬ СЕАНС PSSESSION? PSSession следует использовать, когда необходимо постоянное подключение к удаленному компьютеру. В сеансе PSSession можно выполнять несколько команд, совместно использующих данные, такие как значение переменных, содержимое функции или определение псевдонима. Удаленные команды можно выполнять, не создавая сеанс PSSession. Для выполнения одной команды или последовательности несвязанных команд на одном или нескольких компьютерах можно использовать параметр ComputerName командлетов, позволяющих удаленную работу. Когда используется параметр ComputerName командлетов Invoke-Expression или Enter-PSSession, Windows PowerShell устанавливает временное подключение к удаленному компьютеру и завершает подключение, как только команда завершает выполнение. Все созданные данные теряются при завершении соединения. Другие командлеты, у которых есть параметр 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 СОЗДАНИЕ СЕАНСОВ PSSESSION НА НЕСКОЛЬКИХ КОМПЬЮТЕРАХ Чтобы создать сеансы PSSession на нескольких компьютерах, используйте параметр ComputerName командлета New-PSSession. Введите имена удаленных компьютеров в виде списка, разделенного запятыми. Например, чтобы создать сеансы PSSession на компьютерах Server01, Server02 и Server03, введите следующую строку: new-PSSession -computername Server01, Server02, Server03 Командлет New-PSSession создает один сеанс PSSession на каждом из удаленных компьютеров. ПОЛУЧЕНИЕ СЕАНСОВ PSSESSION Чтобы получить сеансы PSSession, созданные в текущем сеансе, используйте командлет Get-PSSession. Командлет Get-PSSession возвращает тот же тип объекта, что и командлет New-PSSession. Следующая команда получает все сеансы PSSession, созданные в текущем сеансе. get-PSSession По умолчанию для сеансов PSSession выводятся их идентификаторы и понятные имена по умолчанию. При создании сеанса можно назначить ему другое понятное имя. Id Name ComputerName State ConfigurationName --- ---- ------------ ----- --------------------- 1 Session1 Server01 Opened Microsoft.PowerShell 2 Session2 Server02 Opened Microsoft.PowerShell 3 Session3 Server03 Opened Microsoft.PowerShell Также можно сохранять сеансы PSSession в переменной. Следующая команда получает сеансы PSSession и сохраняет их в переменной $ps123. $ps123 = get-PSSession При использовании командлетов PSSession можно обратиться к сеансу PSSession по его идентификатору, имени или идентификатору его экземпляра (GUID). Следующая команда получает сеанс PSSession по его идентификатору и сохраняет его в переменной $ps01. $ps01 = get-PSSession -id 1 Команда Get-PSSession получает только сеансы PSSession, созданные в текущем сеансе. Команда не получает сеансы PSSession, созданные в других сеансах или на других компьютерах, даже если сеансы подключены к локальному компьютеру и выполняют на нем команды. ВЫПОЛНЕНИЕ КОМАНД В СЕАНСЕ PSSESSION Для выполнения команды в одном или нескольких сеансах PSSession используйте командлет Invoke-Command. Используйте параметр Session для задания сеансов PSSession и параметр ScriptBlock для задания команды. Например, для выполнения команды Get-ChildItem ("dir") в каждом из трех сеансов PSSession, сохраненных в переменной $ps123, введите следующую строку: invoke-command -session $ps123 -scriptblock {get-childitem} УДАЛЕНИЕ СЕАНСОВ PSSESSION По окончании работы с сеансом PSSession используйте командлет Remove-PSSession для удаления сеанса PSSession и освобождения занятых им ресурсов. remove-PSSession -session $ps - или: remove-PSSession -id 1 Если сеанс PSSession не удалить, он остается открытым и доступным для использования, пока не будет закрыт текущий сеанс или Windows PowerShell. Также можно использовать параметр TimeOut командлета New-PSSession, чтобы задать время ожидания для сеанса PSSession, который не используется. Чтобы получить дополнительные сведения, см. new-PSSession. КОМАНДЛЕТЫ PSSESSION Командлет Описание ----------------- ------------------------------------------------------ New-PSSession Создает новый сеанс PSSession на локальном или удаленном компьютере. Get-PSSession Выводит все сеансы PSSession в текущем сеансе. Remove-PSSession Удаляет сеансы PSSession в текущем сеансе. Enter-PSSession Создает интерактивный сеанс. Exit-PSSession Завершает интерактивный сеанс. Чтобы вывести список командлетов PSSession, введите следующую команду: get-help *-PSSession ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ Дополнительные сведения о сеансах PSSession см. в разделе about_PSSession_Details. СМ. ТАКЖЕ about_Remote about_Remote_Requirements New-PSSession Get-PSSession Remove-PSSession Enter-PSSession Exit-PSSession Invoke-Command