Поделиться через


about_Session_Configuration_Files

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

Описывает файлы конфигурации сеанса, которые используются в конфигурации сеанса (также известной как "конечная точка") для определения среды сеансов, использующих конфигурацию сеанса.

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

Файл конфигурации сеанса — это текстовый файл с расширением PSSC, содержащий хэш-таблицу свойств и значений конфигурации сеанса. Для задания свойств конфигурации сеанса можно использовать файл конфигурации сеанса. При этом определяется среда всех сеансов PowerShell, использующих такую конфигурацию сеанса.

Файлы конфигурации сеанса упрощают создание пользовательских конфигураций сеансов без использования сложных сборок или скриптов C#.

"Конфигурация сеанса" или "конечная точка" — это коллекция параметров локального компьютера, которые определяют, какие пользователи могут создавать сеансы на компьютере; какие команды пользователи могут выполнять в этих сеансах; и должен ли сеанс выполняться как привилегированная виртуальная учетная запись. Дополнительные сведения о конфигурациях сеансов см. в разделе about_Session_Configurations.

Конфигурации сеансов появились в Windows PowerShell 2.0, а файлы конфигурации сеанса — в Windows PowerShell 3.0. Для включения файла конфигурации сеанса в конфигурацию сеанса необходимо использовать Windows PowerShell 3.0. Однако параметры в конфигурации сеанса влияют на пользователей Windows PowerShell 2.0 (и более поздних версий).

Создание пользовательских сеансов

Вы можете настроить многие функции сеанса PowerShell, указав свойства сеанса в конфигурации сеанса. Вы можете настроить сеанс, написав программу C#, которая определяет пользовательское пространство выполнения, или использовать файл конфигурации сеанса для определения свойств сеансов, созданных с помощью конфигурации сеанса. Как правило, проще использовать файл конфигурации сеанса, чем писать программу C#.

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

Кроме того, вы можете управлять тем, могут ли пользователи сеанса использовать языковые элементы PowerShell, такие как блоки скриптов, или же они могут выполнять только команды. Вы можете управлять версией PowerShell, выполняемой пользователями в сеансе; управление модулями, импортируемыми в сеанс; и управляют командлетами, функциями и псевдонимами, которые пользователи сеанса могут запускать. При использовании поля RoleDefinitions можно предоставить пользователям различные возможности в сеансе в зависимости от членства в группе.

Дополнительные сведения о RoleDefinitions и определении этого значения см. в разделе справки по командлету New-PSRoleCapabilityFile.

Создание файла конфигурации сеанса

Самый простой способ создать файл конфигурации сеанса — использовать командлет New-PSSessionConfigurationFile. Этот командлет создает файл, который использует правильный синтаксис и формат и который автоматически проверяет многие значения свойств файла конфигурации.

Подробные описания свойств, которые можно задать в файле конфигурации сеанса, см. в разделе справки по командлету New-PSSessionConfigurationFile.

Следующая команда создает файл конфигурации сеанса, в котором используются значения по умолчанию. Результирующий файл конфигурации использует только значения по умолчанию, так как никакие параметры, кроме параметра Path (который указывает путь к файлу), не включаются:

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Чтобы просмотреть новый файл конфигурации в текстовом редакторе по умолчанию, используйте следующую команду:

Invoke-Item -Path .\Defaults.pssc

Чтобы создать конфигурацию сеанса для сеансов, в которых пользователь может выполнять команды, но не использовать другие элементы языка PowerShell, введите:

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

В предыдущей команде установка параметра LanguageMode в значение NoLanguage запрещает пользователям выполнять такие действия, как написание или выполнение скриптов или использование переменных.

Чтобы создать конфигурацию сеанса для сеансов, в которых пользователи могут использовать только командлеты Get, введите:

New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc

В предыдущем примере установка для параметра VisibleCmdlets значения Get-* ограничивает пользователей командлетами, имена которых начинаются со строкового значения Get-.

Чтобы создать конфигурацию сеанса для сеансов, которые выполняются под привилегированной виртуальной учетной записью вместо учетных данных пользователя, введите:

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

Чтобы создать конфигурацию сеанса для сеансов, в которых команды, видимые пользователю, указаны в файле возможностей роли, введите следующее:

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

Использование файла конфигурации сеанса

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

Чтобы включить файл конфигурации сеанса при создании конфигурации сеанса, используйте параметр Path командлета Register-PSSessionConfiguration.

Например, следующая команда использует файл NoLanguage.pssc при создании конфигурации сеанса NoLanguage.

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

При запуске нового сеанса NoLanguage пользователи будут иметь доступ только к командам PowerShell.

Чтобы добавить файл конфигурации сеанса в существующую конфигурацию сеанса, используйте командлет Set-PSSessionConfiguration и параметр Path. Это влияет на все новые сеансы, созданные с указанной конфигурацией сеанса. Обратите внимание, что командлет Set-PSSessionConfiguration изменяет сам сеанс и не изменяет файл конфигурации сеанса.

Например, следующая команда добавляет файл NoLanguage.pssc в конфигурацию сеанса LockedDown.

Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc

Когда пользователи используют конфигурацию сеанса LockedDown для создания сеанса, они смогут выполнять командлеты, но не смогут создавать или использовать переменные, назначать значения или использовать другие языковые элементы PowerShell.

Следующая команда использует командлет New-PSSession для создания сеанса на компьютере Srv01, который использует конфигурацию сеанса LockedDown, сохраняя ссылку на объект сеанса в переменной $s. ACL (список управления доступом) конфигурации сеанса определяет, кто может использовать его для создания сеанса.

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

Так как ограничения NoLanguage были добавлены в конфигурацию сеанса LockedDown, пользователи в сеансах LockedDown смогут выполнять только команды и командлеты PowerShell. Например, следующие две команды используют командлет Invoke-Command для выполнения команд в сеансе, на который ссылается переменная $s. Первая команда, которая запускает командлет Get-UICulture и не использует переменные, выполняется успешно. Вторая команда, которая получает значение переменной $PSUICulture, завершается сбоем.

Invoke-Command -Session $s {Get-UICulture}
en-US

Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo          : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed

Изменение файла конфигурации сеанса

Все параметры в конфигурации сеанса, кроме RunAsVirtualAccount и RunAsVirtualAccountGroups, можно изменить, изменив файл конфигурации сеанса, используемый конфигурацией сеанса. Для этого начните с поиска активной копии файла конфигурации сеанса.

При использовании файла конфигурации сеанса в конфигурации сеанса PowerShell создает активную копию файла конфигурации сеанса и сохраняет ее в каталоге $pshome\SessionConfig на локальном компьютере.

Расположение активной копии файла конфигурации сеанса хранится в свойстве ConfigFilePath объекта конфигурации сеанса.

Следующая команда возвращает расположение файла конфигурации сеанса для конфигурации сеанса NoLanguage.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

Эта команда возвращает путь к файлу, аналогичный следующему:

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

PsSC-файл можно изменить в любом текстовом редакторе. После сохранения файла он будет использоваться любыми новыми сеансами, которые используют конфигурацию сеанса.

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

Тестирование файла конфигурации сеанса

Используйте командлет Test-PSSessionConfigurationFile для проверки файлов конфигурации сеанса, измененных вручную. Это важно: если синтаксис файла и значения недопустимы, пользователи не смогут использовать конфигурацию сеанса для создания сеанса.

Например, следующая команда проверяет активный файл конфигурации сеанса NoLanguage.

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Если синтаксис и значения в файле конфигурации допустимы, Test-PSSessionConfigurationFile возвращает значение True. Если синтаксис и значения недопустимы, командлет возвращает значение False.

Вы можете использовать Test-PSSessionConfigurationFile для тестирования любого файла конфигурации сеанса, включая файлы, создаваемые командлетом New-PSSessionConfiguration. Дополнительные сведения см. в разделе справки по командлету Test-PSSessionConfigurationFile.

Удаление файла конфигурации сеанса

Невозможно удалить файл конфигурации сеанса из конфигурации сеанса. Однако можно заменить файл новым файлом, который использует параметры по умолчанию. Это фактически отменяет параметры, используемые в исходном файле конфигурации.

Чтобы заменить файл конфигурации сеанса, создайте новый файл конфигурации сеанса, который использует параметры по умолчанию, а затем используйте командлет Set-PSSessionConfiguration, чтобы заменить пользовательский файл конфигурации сеанса новым файлом.

Например, следующие команды создают файл конфигурации сеанса по умолчанию, а затем заменяют активный файл конфигурации сеанса в конфигурации сеанса NoLanguage.

New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc

После завершения этих команд конфигурация сеанса NoLanguage фактически обеспечит полную языковую поддержку (параметр по умолчанию) для всех сеансов, созданных с помощью этой конфигурации сеанса.

Просмотр свойств конфигурации сеанса Объекты конфигурации сеанса, представляющие конфигурации сеанса с помощью файлов конфигурации сеанса, имеют дополнительные свойства, упрощающие обнаружение и анализ конфигурации сеанса. (Обратите внимание, что имя типа, показанное ниже, содержит определение форматированного представления.) Чтобы просмотреть свойства, выполните командлет Get-PSSessionConfiguration и по конвейеру возвращенные данные в командлет Get-Member:

Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration

Name                          MemberType     Definition
----                          ----------     ----------
Equals                        Method         bool Equals(System.O...
GetHashCode                   Method         int GetHashCode()
GetType                       Method         type GetType()
ToString                      Method         string ToString()
Architecture                  NoteProperty   System.String Archit...
Author                        NoteProperty   System.String Author...
AutoRestart                   NoteProperty   System.String AutoRe...
Capability                    NoteProperty   System.Object[] Capa...
CompanyName                   NoteProperty   System.String Compan...
configfilepath                NoteProperty   System.String config...
Copyright                     NoteProperty   System.String Copyri...
Enabled                       NoteProperty   System.String Enable...
ExactMatch                    NoteProperty   System.String ExactM...
ExecutionPolicy               NoteProperty   System.String Execut...
Filename                      NoteProperty   System.String Filena...
GUID                          NoteProperty   System.String GUID=0...
ProcessIdleTimeoutSec         NoteProperty   System.String Proces...
IdleTimeoutms                 NoteProperty   System.String IdleTi...
lang                          NoteProperty   System.String lang=e...
LanguageMode                  NoteProperty   System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty   System.String MaxCon...
MaxConcurrentUsers            NoteProperty   System.String MaxCon...
MaxIdleTimeoutms              NoteProperty   System.String MaxIdl...
MaxMemoryPerShellMB           NoteProperty   System.String MaxMem...
MaxProcessesPerShell          NoteProperty   System.String MaxPro...
MaxShells                     NoteProperty   System.String MaxShells
MaxShellsPerUser              NoteProperty   System.String MaxShe...
Name                          NoteProperty   System.String Name=N...
PSVersion                     NoteProperty   System.String PSVersion
ResourceUri                   NoteProperty   System.String Resour...
RunAsPassword                 NoteProperty   System.String RunAsP...
RunAsUser                     NoteProperty   System.String RunAsUser
SchemaVersion                 NoteProperty   System.String Schema...
SDKVersion                    NoteProperty   System.String SDKVer...
OutputBufferingMode           NoteProperty   System.String Output...
SessionType                   NoteProperty   System.String Sessio...
UseSharedProcess              NoteProperty   System.String UseSha...
SupportsOptions               NoteProperty   System.String Suppor...
xmlns                         NoteProperty   System.String xmlns=...
XmlRenderingType              NoteProperty   System.String XmlRen...
Permission                    ScriptProperty System.Object Permis...

Эти свойства упрощают поиск конкретных конфигураций сеансов. Например, можно использовать свойство ExecutionPolicy для поиска конфигурации сеанса, поддерживающей сеансы с политикой выполнения RemoteSigned. Обратите внимание, что, поскольку свойство ExecutionPolicy существует только в сеансах, использующих файлы конфигурации сеанса, команда может возвращать не все соответствующие конфигурации сеанса.

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

Следующая команда получает конфигурации сеанса, в которых RunAsUser является администратором Exchange.

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

Чтобы просмотреть сведения об определениях ролей, связанных с конфигурацией, используйте командлет Get-PSSessionCapability. Этот командлет позволяет определить команды и среду, доступные определенным пользователям в определенных конечных точках.

Примечания

Конфигурации сеансов также поддерживают тип сеанса, известный как "пустой" сеанс. Пустой тип сеанса позволяет создавать пользовательские сеансы с выбранными командами. Если вы не добавляете модули, функции или скрипты в пустой сеанс, сеанс будет ограничен выражениями и может быть нецелесообразно. Свойство SessionType сообщает, работаете ли вы с пустым сеансом.

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