about_PowerShell_Config
Краткое описание
Файлы конфигурации для PowerShell, заменяющие конфигурацию реестра.
Подробное описание
Файл powershell.config.json
содержит параметры конфигурации для PowerShell. PowerShell загружает эту конфигурацию при запуске. Параметры также можно изменить во время выполнения. Ранее эти параметры были сохранены в реестре Windows для PowerShell, но теперь содержатся в файле для включения конфигурации в macOS и Linux.
Сводка параметров
Файл powershell.config.json
может содержать следующие ключи:
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExperimentalFeatures
LogChannels
LogIdentity
LogKeywords
LogLevel
Microsoft.PowerShell:ExecutionPolicy
PSModulePath
PowerShellPolicies
ExecutionPolicy
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Не все ключи применяются ко всем платформам. Ключ PowerShellPolicies
содержит вложенные ключи, которые отражают параметры, управляемые групповой политикой Окна. Эти подразделы также применяются ко всем платформам при определении на корневом уровне JSON-файла.
Предупреждение
Нераспознанные ключи или недопустимые значения в файле конфигурации игнорируются. powershell.config.json
Если файл содержит недопустимый JSON, PowerShell не может запустить интерактивный сеанс. В этом случае необходимо исправить файл конфигурации.
Область конфигурации
Параметры конфигурации можно определить для всех пользователей или на отдельном уровне пользователя.
Конфигурация AllUsers (shared)
powershell.config.json
Файл в $PSHOME
каталоге определяет конфигурацию для всех сеансов PowerShell, выполняемых из этой установки PowerShell.
Примечание.
Расположение $PSHOME
определяется как тот же каталог, что и выполнение System.Management.Automation.dll сборки. Это также относится к размещенным экземплярам пакета SDK PowerShell.
Конфигурации CurrentUser (на пользователя)
Вы также можете настроить PowerShell на основе каждого пользователя, разместив файл в каталог конфигурации области пользователя. Каталог конфигурации пользователя можно найти на разных платформах с помощью команды Split-Path $PROFILE.CurrentUserCurrentHost
.
Приоритет области
В Windows параметры, управляемые групповой политикой Windows, имеют приоритет над параметрами в файле конфигурации. Групповая политика не существует на платформах, отличных от Windows.
После групповой политики параметры, определенные на уровне AllUsers , имеют приоритет над параметрами, определенными для уровня CurrentUser .
Параметры, относящиеся к Windows
Следующие параметры применяются только к платформам Windows.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
Если задано значение true
, этот параметр отключает функцию совместимости Windows PowerShell. Совместимость Windows PowerShell позволяет PowerShell 7 загружать модули Windows PowerShell 5.1 в режиме совместимости.
Дополнительные сведения см. в about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityModuleDenyList
Этот параметр представляет собой массив имен модулей, которые необходимо исключить из участия в функции совместимости Windows PowerShell.
Дополнительные сведения см. в about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityNoClobberModuleList
Этот параметр представляет собой массив имен модулей, которые не должны быть клонированы путем загрузки версии Windows PowerShell 5.1 модуля.
Дополнительные сведения см. в about_Windows_PowerShell_Compatibility.
ExecutionPolicy
Внимание
Эта конфигурация применяется только на платформах Windows.
Настраивает политику выполнения для сеансов PowerShell, определяя, какие сценарии можно запускать. По умолчанию PowerShell использует существующую политику выполнения.
Для конфигураций AllUsers устанавливается политика выполнения LocalMachine . Для конфигураций CurrentUser устанавливается политика выполнения CurrentUser .
В следующем примере политика выполнения PowerShell устанавливается в значение RemoteSigned
.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Дополнительную информацию см. в разделе about_Execution_Policies.
PowerShellPolicies
Windows имеет несколько параметров, которые могут управляться групповой политикой. Обычно эти параметры хранятся в реестре Windows. Эти параметры также можно определить в powershell.config.json
файле.
Это PowerShellPolicies
объект JSON, содержащий пары "ключ-значение" для различных параметров политики. Эти параметры политики также можно указать на корневом уровне JSON-файла за пределами PowerShellPolicies
объекта. Этот параметр может содержать следующие подразделы:
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Этот ScriptExecution
параметр используется для задания политики выполнения PowerShell.
Это имеет приоритет над параметром, описанным ExecutionPolicy
выше.
Пример:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Описание других параметров политики см. в описании общих параметров конфигурации .
В Windows PowerShell ищет параметры в реестре. Все параметры, найденные в реестре, имеют приоритет. Далее PowerShell считывает конфигурацию JSON. Все параметры, найденные в разделе PowerShellPolicies
, и не определенные в реестре, имеют приоритет над параметрами, найденными на корневом уровне конфигурации JSON.
Дополнительные сведения см. в статье О параметрах групповой политики.
Параметры для платформ, отличных от Windows
Следующие параметры применяются только к платформам Linux и macOS.
Следующие ключи используются для настройки ведения журнала PowerShell для Linux и macOS.
LogChannels
LogIdentity
LogKeywords
LogLevel
Полное описание ведения журнала PowerShell для систем, отличных от Windows, см. в разделе about_Logging_Non-Windows.
Общие параметры конфигурации
Следующие параметры доступны на всех поддерживаемых платформах.
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
ConsoleSessionConfiguration
Этот параметр указывает конфигурацию сеанса, используемую для всех сеансов PowerShell. Это может быть любая конечная точка, зарегистрированная на локальном компьютере, включая конечные точки удаленного взаимодействия PowerShell по умолчанию или пользовательскую конечную точку с определенными возможностями роли пользователя.
Этот ключ содержит два подраздела:
EnableConsoleSessionConfiguration
— чтобы включить конфигурации сеансов, задайте для параметра значениеtrue
. По умолчанию это значение равноfalse
.ConsoleSessionConfigurationName
— указывает имя конечной точки конфигурации, в которой выполняется PowerShell. По умолчанию сеанс не определен.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Дополнительные сведения см. в about_Session_Configurations.
Экспериментальныеfeatures
Имена экспериментальных функций для включения в PowerShell. Значение по умолчанию — пустой массив.
Следующий пример включает экспериментальные функции PSCommandNotFoundSuggestion и PSSubsystemPluginModel при запуске PowerShell.
Пример:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Дополнительные сведения о экспериментальных функциях см. в разделе "Использование экспериментальных функций".
ModuleLogging
Этот параметр управляет поведением ведения журнала для модулей PowerShell. Параметр содержит два подраздела:
EnableModuleLogging
— чтобы включить ведение журнала модулей, задайте для параметра значениеtrue
. При включении события выполнения конвейера для членов указанных модулей записываются в файлы журнала PowerShell.ModuleNames
— указывает имя модулей, которые должны быть зарегистрированы.
Пример:
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
Этот параметр позволяет настроить ведение журнала защищенных событий. Параметр содержит два подраздела:
EnableProtectedEventLogging
— Если этот параметр политики включен, компоненты, поддерживающие его, используют сертификат, который предоставляется для шифрования данных журнала перед записью в журнал. Данные шифруются с помощью стандарта синтаксиса криптографических сообщений (CMS). Вы можетеUnprotect-CmsMessage
расшифровать зашифрованные сообщения, если у вас есть доступ к закрытому ключу сертификата.EncryptionCertificate
— предоставляет список имен сертификатов, используемых для шифрования.
Пример:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Переопределяет PSModulePath
параметры для этого сеанса PowerShell. Если конфигурация настроена для текущего пользователя, задает путь модуля CurrentUser . Если конфигурация настроена для всех пользователей, задает путь модуля AllUsers .
Предупреждение
Настройка пути модуля AllUsers или CurrentUser здесь не изменяет расположение установки с областью действия для командлетов PowerShellGet, таких как Install-Module. Эти командлеты всегда используют пути модуля по умолчанию .
Если значение не задано, PowerShell использует значение по умолчанию для соответствующего параметра пути модуля. Дополнительные сведения об этих значениях по умолчанию см. в about_PSModulePath.
Этот параметр позволяет использовать переменные среды, внедряя их между %
символами, например "%HOME%\Documents\PowerShell\Modules"
, так же, как и командная оболочка Windows. Этот синтаксис также применяется к Linux и macOS. Пример см. ниже.
В этом примере показана PSModulePath
конфигурация среды Windows:
{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
В этом примере показана PSModulePath
конфигурация для среды macOS или Linux:
{
"PSModulePath": "/opt/powershell/6/Modules"
}
В этом примере показано внедрение переменной среды в PSModulePath
конфигурацию. Обратите внимание, что с помощью переменной HOME
среды и /
разделителя каталогов этот синтаксис работает в Windows, macOS и Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
В этом примере используется переменная среды, которая работает только в macOS и Linux:
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
Примечание.
Переменные PowerShell не могут быть внедрены в PSModulePath
конфигурации.
PSModulePath
конфигурации в Linux и macOS чувствительны к регистру. PSModulePath
Конфигурация должна использовать допустимые разделители каталогов для платформы. В macOS и Linux это означает /
. В Windows оба /
и \
работа.
ScriptBlockLogging
Этот параметр управляет ведением журнала всех входных данных скрипта PowerShell. Этот параметр содержит два подраздела:
EnableScriptBlockLogging
— Если этот параметр политики включен, PowerShell регистрирует обработку команд, блоков скриптов, функций и скриптов, вызываемых в интерактивном режиме или с помощью автоматизации.EnableScriptBlockInvocationLogging
— включает ведение журнала событий запуска и остановки блока скриптов.
Пример:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Расшифровка
Этот параметр политики позволяет записывать входные и выходные данные команд PowerShell в текстовых расшифровках. Если этот параметр политики включен, PowerShell включает транскрибирование для всех сеансов PowerShell.
Этот параметр определяет, как работает транскрибирование в PowerShell. Этот параметр содержит три подраздела:
EnableTranscripting
— Если этот параметр включен, PowerShell создает файлы журнала транскрибирования в настроенном расположении.EnableInvocationHeader
— По умолчанию PowerShell содержит заголовок в верхней части файла журнала транскрибирования. Вы можете отключить заголовок с помощью этого параметра.OutputDirectory
— Этот параметр позволяет собирать файлы журнала транскрибирования в центральном расположении вместо расположения по умолчанию.
Пример:
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "c:\\tmp"
}
}
Дополнительные сведения см. в разделе "Начальная расшифровка".
UpdatableHelp
Этот параметр политики позволяет задать значение по умолчанию параметра SourcePath в командлете Update-Help
. Это значение по умолчанию можно переопределить, указав другое значение с помощью параметра SourcePath .
Пример:
{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}
PowerShell