about_PowerShell_Config

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

Файлы конфигурации для PowerShell, заменяющие конфигурацию реестра.

Длинное описание

Файл powershell.config.json содержит параметры конфигурации для PowerShell. PowerShell загружает эту конфигурацию при запуске. Параметры также можно изменить во время выполнения. Не все ключи применяются ко всем платформам.

Предупреждение

Нераспознанные ключи или недопустимые значения в файле конфигурации игнорируются. Если файл powershell.config.json содержит недопустимый JSON, PowerShell не может запустить интерактивный сеанс. В этом случае необходимо исправить файл конфигурации.

Сводка параметров

Файл powershell.config.json может содержать следующие ключи:

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExperimentalFeatures
  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel
  • Microsoft.PowerShell:ExecutionPolicy
  • PSModulePath
  • PowerShellPolicies
    • ExecutionPolicy
    • ConsoleSessionConfiguration
    • ModuleLogging
    • ProtectedEventLogging
    • ScriptBlockLogging
    • ScriptExecution
    • Transcription
    • UpdatableHelp

Область конфигурации

Параметры конфигурации можно определить для всех пользователей или на отдельном уровне пользователя.

Приоритет области

За исключением нескольких особых случаев параметры, определенные на уровне CurrentUser , имеют приоритет над параметрами, определенными для уровня AllUsers .

В системах Windows:

  • Параметры, управляемые Windows групповой политикой, имеют приоритет над параметрами в файлах конфигурации.
  • Параметры уровня области поддержки политики выполнения.

На всех платформах:

  • Результирующее значение $env:PSModulePath — это слияние значений PSModulePath ключа из обеих областей.

Конфигурация AllUsers (shared)

Файл powershell.config.json в каталоге $PSHOME определяет конфигурацию для всех сеансов PowerShell, выполняемых из этой установки PowerShell.

Заметка

Расположение $PSHOME определяется как тот же каталог, что и выполнение System.Management.Automation.dll сборки. Это также относится к размещенным экземплярам пакета SDK PowerShell.

Конфигурации CurrentUser (на пользователя)

Вы также можете настроить PowerShell на основе каждого пользователя, разместив файл в каталог конфигурации области пользователя. Каталог конфигурации пользователя можно найти на разных платформах с помощью следующей команды:

Split-Path $PROFILE.CurrentUserCurrentHost

Параметры, относящиеся к Windows

Следующие параметры применяются только к платформам Windows.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • Microsoft.PowerShell:ExecutionPolicy
  • PowerShellPolicies
    • ScriptExecution

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.

Microsoft. PowerShell:ExecutionPolicy

Настраивает политику выполнения для сеансов PowerShell, определяя, какие сценарии можно запускать. По умолчанию PowerShell использует существующую политику выполнения.

Для конфигураций AllUsers задает политику выполнения LocalMachine. Для конфигураций CurrentUser задает политику выполнения CurrentUser.

В следующем примере политика выполнения PowerShell устанавливается для RemoteSigned.

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}

Дополнительные сведения см. в about_Execution_Policies.

Параметры для платформ, отличных от Windows

Следующие параметры применяются только к платформам Linux и macOS.

Используйте следующие ключи, чтобы настроить ведение журнала PowerShell для Linux и macOS.

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

Полное описание ведения журнала PowerShell для систем, отличных от Windows, см. в разделе about_Logging_Non-Windows.

Общие параметры конфигурации

Следующие параметры доступны на всех поддерживаемых платформах.

  • ExperimentalFeatures
  • PSModulePath
  • PowerShellPolicies

Экспериментальныеfeatures

Имена экспериментальных функций для включения в PowerShell. Значение по умолчанию — пустой массив.

Следующий пример включает PSCommandNotFoundSuggestion и PSSubsystemPluginModel экспериментальных функций при запуске PowerShell.

Пример:

{
  "ExperimentalFeatures": [
    "PSCommandNotFoundSuggestion",
    "PSSubsystemPluginModel"
  ]
}

Дополнительные сведения о экспериментальных функциях см. в разделе Использование экспериментальных функций.

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\\7\\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 работают как /, так и \.

PowerShellPolicies

Это PowerShellPolicies объект JSON, содержащий пары "ключ-значение" для различных параметров. ScriptExecution За исключением параметра, все параметры можно использовать на платформах Windows, Linux и macOS.

PowerShellPolicies содержит следующие подразделы:

  • ConsoleSessionConfiguration
  • ModuleLogging
  • ProtectedEventLogging
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

В Windows эти параметры можно управлять с помощью групповой политики Windows. Параметры групповой политики имеют приоритет. Если значение не задано групповой политикой, PowerShell применяет значения в JSON-файле в порядке приоритета области .

Групповая политика — это рекомендуемый способ управления этими параметрами в системах Windows. Дополнительные сведения см. в about_Group_Policy_Settings.

ConsoleSessionConfiguration

Этот параметр указывает конфигурацию сеанса, используемую для всех сеансов PowerShell. Это может быть любая конечная точка, зарегистрированная на локальном компьютере, включая конечные точки удаленного взаимодействия PowerShell по умолчанию или пользовательскую конечную точку с определенными возможностями роли пользователя.

Этот ключ содержит два подраздела:

  • EnableConsoleSessionConfiguration — чтобы включить конфигурации сеансов, задайте значение true. По умолчанию это значение false.

  • ConsoleSessionConfigurationName. Указывает имя конечной точки конфигурации, в которой выполняется PowerShell. По умолчанию сеанс не определен.

{
  "ConsoleSessionConfiguration": {
    "EnableConsoleSessionConfiguration": false,
    "ConsoleSessionConfigurationName" : []
  }
}

Дополнительные сведения см. в about_Session_Configurations.

ModuleLogging

Этот параметр управляет поведением ведения журнала для модулей PowerShell. Параметр содержит два подраздела:

  • EnableModuleLogging — чтобы включить ведение журнала модулей, задайте значение true. При включении события выполнения конвейера для членов указанных модулей записываются в файлы журнала PowerShell.
  • ModuleNames — указывает имя модулей, которые должны быть зарегистрированы.

Пример:

{
  "ModuleLogging": {
    "EnableModuleLogging": true,
    "ModuleNames" : [
        "PSReadLine",
        "PowerShellGet"
    ]
  }
}

ProtectedEventLogging

Этот параметр позволяет настроить ведение журнала защищенных событий. Параметр содержит два подраздела:

  • EnableProtectedEventLogging. Если этот параметр политики включен, компоненты, поддерживающие его, используют сертификат, который предоставляется для шифрования данных журнала перед записью в журнал. Данные шифруются с помощью стандарта синтаксиса криптографических сообщений (CMS). Вы можете использовать Unprotect-CmsMessage для расшифровки этих зашифрованных сообщений, если у вас есть доступ к закрытому ключу сертификата.
  • EncryptionCertificate. Предоставляет список имен сертификатов, используемых для шифрования.

Пример:

{
  "ProtectedEventLogging": {
    "EnableProtectedEventLogging": false,
    "EncryptionCertificate": [
      "Joe"
    ]
  }
}

ScriptBlockLogging

Этот параметр управляет ведением журнала всех входных данных скрипта PowerShell. Этот параметр содержит два подраздела:

  • EnableScriptBlockLogging — Если этот параметр политики включен, PowerShell регистрирует обработку команд, скриптов, функций и скриптов, вызываемых интерактивно или с помощью автоматизации.
  • EnableScriptBlockInvocationLogging — включает ведение журнала событий запуска и остановки скрипта.

Пример:

"ScriptBlockLogging": {
  "EnableScriptBlockInvocationLogging": true,
  "EnableScriptBlockLogging": false
}

ScriptExecution

Параметр ScriptExecution используется для задания политики выполнения PowerShell. Это имеет приоритет над параметром, описанным Microsoft.PowrShell:ExecutionPolicy ранее.

Пример:

{
    "PowerShellPolicies": {
        "ScriptExecution": {
            "ExecutionPolicy": "RemoteSigned"
        }
    }
}

Заметка

Это параметр только для Windows.

Транскрипция

Этот параметр политики позволяет записывать входные и выходные данные команд 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"
    }
}