РАЗДЕЛ about_PSSession_Details КРАТКОЕ ОПИСАНИЕ Предоставляет подробное описание сеансов Windows PowerShell и их роли в работе с удаленными командами. ПОЛНОЕ ОПИСАНИЕ Сеанс - это среда, в которой работает Windows PowerShell. Сеанс создается при каждом запуске Windows PowerShell, пользователь может создавать дополнительные сеансы, называемые "сеансы Windows PowerShell" или "PSSessions" на своем компьютере или на другом компьютере. В отличие от сеансов, которые создает Windows PowerShell, сеансы PSSessions, которые создает пользователь, контролируются и управляются пользователем. Сеансы PSSession играют важную роль для удаленной работы. При создании сеанса PSSession, подключенного к удаленному компьютеру, Windows PowerShell устанавливает постоянное подключение к удаленному компьютеру для поддержки PSSession. PSSession можно использовать для запуска ряда команд, функций и скриптов, использующих данные совместно. Этот раздел содержит подробные сведения об обычных сеансах и сеансах PSSession в Windows PowerShell. Основные сведения о задачах, которые можно выполнять при помощи сеансов, см. в разделе about_PSSessions. СЕАНСЫ Технически сеанс - это среда выполнения, в которой работает Windows PowerShell. Каждый сеанс включает в себя экземпляр обработчика System.Management.Automation и ведущую программу, в которой выполняется Windows PowerShell. Ведущей программой может быть привычная консоль Windows PowerShell или другая программа, выполняющая команды, например Cmd.exe, или программа, построенная, чтобы быть ведущей программой Windows PowerShell, например интегрированная среда скриптов (ISE) Windows PowerShell. С точки зрения Windows сеанс - это процесс Windows на конечном компьютере. Каждый сеанс настраивается независимо. Он имеет собственные свойства, политику выполнения и профили. Среда, существующая в момент создания сеанса, сохраняется в течение времени его существования, даже если изменить среду на компьютере. Все сеансы создаются в глобальной области, даже сеансы, создаваемые в скрипте. В рамках сеанса в один момент времени можно выполнять только одну команду (или командный конвейер). Вторая команда, запущенная синхронно с первой (по одной за раз), ожидает завершения первой команды до четырех минут. Вторая команда, запущенная асинхронно (одновременно), завершается с ошибкой. СЕАНСЫ PSSESSION Сеанс создается при каждом запуске Windows PowerShell. При этом Windows PowerShell создает временные сеансы для выполнения отдельных команд. Однако можно также создавать сеансы, называемые "сеансы Windows PowerShell" или "PSSessions", которые контролируются и управляются пользователем. Сеансы PSSession очень важны для выполнения удаленных команд. Если используется параметр ComputerName командлетов Invoke-Command или Enter- PSSession, Windows PowerShell создает временный сеанс для выполнения команды и закрывает сеанс, как только команда или интерактивный сеанс завершаются. Однако если используется командлет New-PSSession для создания PSSession, Windows PowerShell создает постоянный сеанс на удаленном компьютере, в котором можно выполнять множество команд или интерактивных сеансов. Созданные пользователем сеансы PSSession остаются открытыми и доступными для использования, пока пользователь не удалит их или не закроет сеанс, в котором они были созданы. При создании PSSession на удаленном компьютере система создает процесс PowerShell на удаленном компьютере и устанавливает соединение между локальным компьютером и этим процессом на удаленном компьютере. При создании PSSession на локальном компьютере и новый процесс, и соединения создаются на локальном компьютере. КОГДА ИСПОЛЬЗОВАТЬ PSSESSION? Командлеты Invoke-Command и Enter-PSSession имеют как параметр ComputerName, так и параметр Session. Для выполнения удаленной команды можно использовать любой из них. Для выполнения одной команды или последовательности несвязанных команд на одном или нескольких компьютерах следует использовать параметр ComputerName. Для выполнения команд, работающих с общими данными, необходимо постоянное подключение к удаленному компьютеру. В таком случае необходимо создать сеанс PSSession и использовать параметр Session для выполнения команд в сеансе PSSession. Многие другие командлеты, получающие данные от удаленных компьютеров, например Get-Process, Get-Service, Get-EventLog и Get-WmiObject, имеют только параметр ComputerName. Для удаленного сбора данных они используют технологии, отличные от удаленного взаимодействия Windows PowerShell. У этих командлетов нет параметра Session, но можно использовать командлет Invoke-Command для запуска этих командлетов в сеансе PSSession. КАК СОЗДАТЬ PSSESSION? Для создания сеанса PSSession используйте командлет New-PSSession. Командлет New-PSSession позволяет создавать PSSession на локальном или удаленном компьютере. МОЖНО ЛИ СОЗДАТЬ PSSESSION НА ЛЮБОМ КОМПЬЮТЕРЕ? Чтобы создать сеанс PSSession, подключенный к удаленному компьютеру, в Windows PowerShell для компьютера должно быть настроено удаленное взаимодействие. Текущий пользователь должен быть членом группы "Администраторы" на удаленном компьютере или иметь возможность предоставить учетные данные члена группы "Администраторы". Дополнительные сведения см. в разделе about_Remote_Requirements. МОЖЕТ ЛИ ПОЛЬЗОВАТЕЛЬ УВИДЕТЬ СЕАНСЫ PSSESSION, СОЗДАННЫЕ НА ЕГО КОМПЬЮТЕРЕ ДРУГИМИ ПОЛЬЗОВАТЕЛЯМИ? Нет. Пользователь может получать только сеансы PSSession, которые он создал в текущем сеансе, и управлять он может только этими сеансами. Нельзя увидеть сеансы PSSession, созданные другими пользователями, даже если они выполняют команды на локальном компьютере. МОЖНО ЛИ ВЫПОЛНЯТЬ ФОНОВЫЕ ЗАДАНИЯ В СЕАНСЕ 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 и освобождает все ресурсы, которые они использовали. Можно также использовать параметр TimeOut командлета New-PSSession, чтобы закрыть неиспользуемый сеанс PSSession после заданного интервала времени. Чтобы получить дополнительные сведения, см. New-PSSession. Если не удалить сеанс PSSession или не задать время ожидания, он останется открытым и доступным для использования, пока пользователь не закроет его, не закроет сеанс, в котором он был создан, или не выйдет из Windows PowerShell. Однако сеанс PSSession на удаленном компьютере будет отключен, если удаленный компьютер не отвечает в течение четырех минут. (Удаленный компьютер должен посылать контрольный сигнал каждые три минуты.) Если сохранить объект PSSession в переменной и затем удалить сеанс PSSession или позволить ему быть закрытым по истечении времени ожидания, переменная все еще будет содержать объект PSSession, но сеанс PSSession не активен, его нельзя использовать или восстановить. ВСЕ ЛИ ОБЫЧНЫЕ СЕАНСЫ И СЕАНСЫ PSSESSION ОДИНАКОВЫ? Нет. Разработчики могут создавать настраиваемые сеансы, включающие в себя только выбранные поставщики и командлеты. Если в одном сеансе команда работает, а в другом - нет, это может быть связано с ограничениями сеанса. СМ. ТАКЖЕ about_Jobs about_PSSessions about_Remote about_Remote_Requirements Invoke-Command New-PSSession Get-PSSession Remove-PSSession Enter-PSSession Exit-PSSession