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
PowerShell