about_Session_Configuration_Files

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

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

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

Эта информация относится только к PowerShell, работающей в Windows.

Файл конфигурации сеанса — это текстовый файл с расширением имени 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 указывает, работает ли вы с пустым сеансом.

См. также