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