Поделиться через


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.

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

Параметры для платформ, отличных от 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"
    }
}