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 указывает, работаете ли вы с пустым сеансом.
См. также раздел
- about_Session_Configurations
- New-PSRoleCapabilityFile
- New-PSSession
- Get-PSSessionCapability
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile