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"
    }
}