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


about_PowerShell_Config

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

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

Подробное описание

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

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

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

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

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

Примечание

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

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

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

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

ExecutionPolicy

Важно!

Эта конфигурация применяется только на платформах Windows.

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

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

Примечание

Командлет Set-ExecutionPolicy изменяет этот параметр в файле конфигурации AllUsers при вызове с -Scope LocalMachineпомощью и изменяет этот параметр в файле конфигурации CurrentUser при вызове с -Scope CurrentUserпомощью .

"<shell-id>:ExecutionPolicy": "<execution-policy>"

Где:

  • <shell-id> ссылается на идентификатор текущего узла PowerShell. Для обычной версии PowerShell это .Microsoft.PowerShell В любом сеансе PowerShell его можно обнаружить с помощью $ShellId.
  • <execution-policy> ссылается на допустимое имя политики выполнения.

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

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

В Windows эквивалентные разделы реестра можно найти в \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell разделах HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER.

PSModulePath

Переопределяет параметры этого сеанса PSModulePath PowerShell. Если конфигурация настроена для текущего пользователя, задает путь к модулю CurrentUser . Если конфигурация настроена для всех пользователей, задает путь к модулю AllUsers .

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

Настройка пути модуля AllUsers или CurrentUser здесь не изменяет расположение установки с заданной областью для командлетов PowerShellGet, таких как Install-Module. Эти командлеты всегда используют пути модулей по умолчанию .

Если значение не задано, PowerShell использует значение по умолчанию для соответствующего параметра пути модуля. Дополнительные сведения об этих значениях по умолчанию см. в разделе about_Modules.

Этот параметр позволяет использовать переменные среды, внедряя их между % символами, например "%HOME%\Documents\PowerShell\Modules", так же, как и CMD. Этот синтаксис также применяется в Linux и macOS. Пример см. ниже.

"PSModulePath": "<ps-module-path>"

Где:

  • <ps-module-path> — абсолютный путь к каталогу модуля. Для всех пользовательских конфигураций это каталог общего модуля AllUsers. Для текущих пользовательских конфигураций это каталог модуля CurrentUser.

В этом примере показана 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"
}

В этом примере показано внедрение переменной среды в конфигурацию PSModulePath , которая будет работать только в macOS и Linux:

{
  "PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}

Примечание

Переменные PowerShell не могут быть внедрены в PSModulePath конфигурации. PSModulePath в конфигурациях Linux и macOS учитывается регистр. Конфигурация PSModulePath должна использовать допустимые разделители каталогов для платформы. В macOS и Linux это означает /. В Windows будут работать и /\ .

Экспериментальные функции

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

"ExperimentalFeatures": ["<experimental-feature-name>", ...]

Где:

  • <experimental-feature-name> — это имя экспериментальной функции для включения.

В следующем примере включается экспериментальные функции PSImplicitRemoting и PSUseAbbreviationExpansion при запуске PowerShell.

{
  "ExperimentalFeatures": [
    "PSImplicitRemotingBatching",
    "PSUseAbbreviationExpansion"
  ]
}

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

Конфигурация ведения журналов, отличных от Windows

Важно!

Параметры конфигурации в этом разделе применяются только к macOS и Linux. Ведение журнала для Windows управляется Просмотр событий Windows.

Ведение журнала PowerShell в macOS и Linux можно настроить в файле конфигурации PowerShell. Полное описание ведения журнала PowerShell для систем, отличных от Windows, см. в разделе Сведения о ведении журнала.

LogIdentity

Важно!

Этот параметр можно использовать только в macOS и Linux.

Задает имя удостоверения, используемое для записи в системный журнал. Значение по умолчанию — "powershell".

"LogIdentity": "<log-identity>"

Где:

  • <log-identity> — это строковое удостоверение, которое PowerShell должен использовать для записи в системный журнал.

Примечание

Может потребоваться иметь разные значения LogIdentity для каждого установленного экземпляра PowerShell.

В этом примере мы настраиваем LogIdentity для предварительного выпуска PowerShell.

{
  "LogIdentity": "powershell-preview"
}

LogLevel

Важно!

Этот параметр можно использовать только в macOS и Linux.

Указывает минимальный уровень серьезности, при котором PowerShell должен регистрировать журнал.

"LogLevel": "<log-level>|default"

Где:

  • <log-level> может принимать одно из следующих значений:
    • Всегда
    • Критически важно
    • Ошибка
    • Предупреждение
    • Informational
    • Подробный
    • Отладка

Примечание

Если задать уровень ведения журнала, все уровни журнала будут выше него.

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

В следующем примере задается значение Verbose.

{
  "LogLevel": "Verbose"
}

LogChannels

Важно!

Этот параметр можно использовать только в macOS и Linux.

Определяет, какие каналы ведения журнала включены.

"LogChannels": "<log-channel>,..."

Где:

  • <log-channel> может принимать одно из следующих значений:
    • Операционные — записывает в журнал основные сведения о действиях PowerShell.
    • Аналитика — записывает в журнал более подробные диагностические сведения.

Значение по умолчанию — Operational. Чтобы включить оба канала, включите оба значения в виде одной строки, разделенной запятыми. Пример:

{
  "LogChannels": "Operational,Analytic"
}

LogKeywords

Важно!

Этот параметр можно использовать только в macOS и Linux.

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

"LogKeywords": "<log-keyword>,..."

Где:

  • <log-keyword> может принимать одно из следующих значений:
    • Runspace — управление пространством выполнения
    • Конвейер — операции конвейера
    • Протокол — обработка протокола связи, например PSRP.
    • Транспорт — поддержка транспортного уровня, например SSH
    • Узел — функциональные возможности узла PowerShell, например взаимодействие с консолью
    • Командлеты — встроенные командлеты PowerShell
    • Serializer — логика сериализации
    • Сеанс — состояние сеанса PowerShell
    • ManagedPlugin — подключаемый модуль WSMan

Примечание

Обычно рекомендуется оставить это значение не заданным, если вы не пытаетесь диагностировать определенное поведение в известной части PowerShell. Изменение этого значения только уменьшает объем регистрированных сведений.

В этом примере ведение журнала ограничивается операциями пространства выполнения, логикой конвейера и использованием командлетов. Все остальные журналы будут опущены.

"LogKeywords": "Runspace,Pipeline,Cmdlets"

Дополнительные примеры конфигураций

Пример конфигурации Windows

В этой конфигурации явно задано больше параметров:

  • Политика выполнения для этой установки PowerShell: AllSigned
  • Для пути модуля CurrentUser задан каталог модуля на общем диске.
  • Экспериментальная PSImplicitRemotingBatching функция включена

Примечание

Параметры ExecutionPolicy и PSModulePath здесь будут работать только на платформе Windows, так как путь к модулю использует \ символы разделителя и ; , а политика выполнения — нет Unrestricted (единственная политика, разрешенная на unix-подобных платформах).

{
  "Microsoft.PowerShell.ExecutionPolicy": "AllSigned",
  "PSModulePath": "Z:\\Marisol's Shared Drive\\Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
}

Пример конфигурации, отличной от Windows

Эта конфигурация задает ряд параметров, которые работают только в macOS или Linux:

  • Путь к модулю CurrentUser устанавливается в каталог пользовательского модуля в $HOME
  • Экспериментальная функция PSImplicitRemotingBatching включена
  • Для параметра Уровень ведения журнала PowerShell задано значение Подробно, для дополнительного ведения журнала
  • Эта установка PowerShell записывает данные в журналы с помощью удостоверения home-powershell .
{
  "PSModulePath": "%HOME%/.powershell/Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
  "LogLevel": "Verbose",
  "LogIdentity": "home-powershell"
}

См. также раздел