Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поддержка экспериментальных функций в PowerShell обеспечивает механизм для сосуществования экспериментальных функций с имеющимися стабильными функциями в модулях PowerShell или в самой PowerShell.
Экспериментальная функция — это функция, в которой проект не завершен. Эта функция доступна пользователям для тестирования и предоставления отзывов о ней. Как только процесс разработки экспериментальной функции будет завершен, изменения на этапе проектирования станут критическими.
Внимание
Экспериментальные функции не предназначены для использования в рабочей среде, так как изменения могут привести к нарушению работы. Экспериментальные функции официально не поддерживаются. Тем не менее мы будем признательны вам за любые отзывы и отчеты об ошибках. Сообщить о проблеме можно в исходном репозитории GitHub.
Дополнительные сведения о включении или отключении этих функций см. в статье Экспериментальные функции.
Жизненный цикл экспериментальных функций
Командлет Get-ExperimentalFeature возвращает все экспериментальные функции, доступные PowerShell.
Экспериментальные функции могут поступать из модулей или подсистемы PowerShell. Экспериментальные функции на основе модулей доступны только после импорта модуля. В следующем примере psDesiredStateConfiguration не загружается, поэтому PSDesiredStateConfiguration.InvokeDscResource эта функция недоступна.
Get-ExperimentalFeature
Name Enabled Source Description
---- ------- ------ -----------
PSFeedbackProvider True PSEngine Replace the hard-coded suggestion framework with the extensible feedb…
PSLoadAssemblyFromNativeCode False PSEngine Expose an API to allow assembly loading from native code
PSNativeWindowsTildeExpansion True PSEngine On windows, expand unquoted tilde (`~`) with the user's current home …
PSRedirectToVariable True PSEngine Add support for redirecting to the variable drive
PSSerializeJSONLongEnumAsNumber True PSEngine Serialize enums based on long or ulong as an numeric value rather tha…
PSSubsystemPluginModel True PSEngine A plugin model for registering and un-registering PowerShell subsyste…
Используйте командлеты Enable-ExperimentalFeature и Disable-ExperimentalFeature, чтобы включить или отключить функцию. Чтобы это изменение вступило в действие, вам нужно будет запустить новый сеанс PowerShell. Выполните следующую команду, чтобы включить эту функцию PSCommandNotFoundSuggestion :
Enable-ExperimentalFeature PSFeedbackProvider
WARNING: Enabling and disabling experimental features do not take effect until next start
of PowerShell.
Когда экспериментальная функция становится основной, она больше не доступна в качестве экспериментальной функции, так как функциональность теперь является частью подсистемы PowerShell или модуля. Например, эта функция стала стандартной PSAnsiRenderingFileInfo в PowerShell 7.3. Вы автоматически получаете функциональность этой функции.
Примечание.
Некоторые функции имеют требования к конфигурации, такие как переменные предпочтения, которые должны быть заданы, чтобы получить нужные результаты от функции.
Если экспериментальная функция прекращена, эта функция больше не доступна в PowerShell. Например, функция PSNativePSPathResolution была отключена в PowerShell 7.3.
Доступные функции
В этой статье описываются доступные экспериментальные функции и сведения об их использовании.
Легенда
- Значок
указывает, что экспериментальная функция доступна в версии PowerShell
- Значок
указывает версию PowerShell, в которой экспериментальная функция стала основной
- Значок
указывает версию PowerShell, в которой была удалена экспериментальная функция.
PSCommandNotFoundSuggestion (Предложение по команде не найдено)
Примечание.
Эта функция стала основной в PowerShell 7.5-preview.5.
Рекомендует потенциальные команды на основе поиска нечетких соответствий после CommandNotFoundException.
PS> get
get: The term 'get' isn't recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify
that the path is correct and try again.
Suggestion [4,General]: The most similar commands are: set, del, ft, gal, gbp, gc, gci,
gcm, gdr, gcs.
PSCommandWithArgs
Примечание.
Эта функция стала основной в PowerShell 7.5-preview.5.
Функция включает параметр -CommandWithArgs для pwsh. Этот параметр позволяет выполнять команду PowerShell с аргументами. В отличие от параметра -Command, этот параметр заполняет встроенную переменную $args, которую можно использовать в команде.
Первая строка — это команда, а последующие строки, разделенные пробелами, — это аргументы.
Например:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
В примере получается следующий вывод.
arg: arg1
arg: arg2
Эта функция добавлена в PowerShell 7.4-preview.2.
PSDesiredStateConfiguration.InvokeDscResource
Эта функция включает компиляцию в MOF в системах, отличных от Windows, и позволяет использовать Invoke-DSCResource без LCM.
Начиная с PowerShell 7.2 модуль PSDesiredStateConfiguration был удален, и эта функция отключена по умолчанию. Чтобы включить эту функцию, необходимо установить модуль PSDesiredStateConfiguration версии 2.0.5 из коллекция PowerShell и включить эту функцию.
DSC версии 3 не имеет этой экспериментальной функции. Версия DSC 3 поддерживает только Invoke-DSCResource и не использует или поддерживает компиляцию MOF. Дополнительные сведения см. в разделе PowerShell Desired State Configuration версии 3.
PSFeedbackProvider
Примечание.
Эта экспериментальная функция была добавлена в PowerShell 7.4-preview.3. Эта функция стала основной в PowerShell 7.6-preview.6.
При включении этой функции PowerShell использует новый поставщик обратной связи, чтобы предоставить уведомление, когда не удается найти команду. Поставщик отзывов является расширяемым и может быть реализован сторонними модулями. Поставщик отзывов может использоваться другими подсистемами, такими как подсистема прогнозирования, для предоставления прогнозных результатов IntelliSense.
Эта функция включает два встроенных поставщика отзывов:
GeneralCommandErrorFeedback обслуживает те же функции предложений, которые существуют сегодня
UnixCommandNotFound, доступный в Linux, предоставляет отзывы, аналогичные bash.
UnixCommandNotFound служит как поставщиком отзывов, так и прогнозатором. Команда command-not-found используется как для предоставления обратной связи, если команда не найдена при интерактивном запуске, так и для предоставления предсказательных результатов IntelliSense для следующей командной строки.
PSLoadAssemblyFromNativeCode
Предоставляет API, позволяющий загружать сборки из нативного кода.
PSModuleAutoLoadSkipOfflineFiles
Примечание.
Эта функция стала основной в PowerShell 7.5-preview.5.
Если эта функция включена, если PSModulePath пользователя содержит папку из поставщика облачных служб, например OneDrive, PowerShell больше не активирует скачивание всех файлов, содержащихся в этой папке. Все файлы, помеченные как не скачанные, пропускаются. Пользователи, использующие поставщики облачных служб для синхронизации модулей между компьютерами, должны пометить папку модуля как закрепленную или эквивалентную для поставщиков, отличных от OneDrive. Пометка папки модуля как закреплённая гарантирует, что файлы всегда хранятся на диске.
Эта функция была добавлена в PowerShell 7.4-preview.1.
PSNativeWindowsTildeExpansion
Примечание.
Эта экспериментальная функция была добавлена в PowerShell 7.5-preview.2. Эта функция стала основной в PowerShell 7.6-preview.6.
Если эта функция включена, PowerShell заменяет незаключённую в кавычки тильду (~) на текущую домашнюю папку пользователя перед вызовом встроенных команд. В следующих примерах показано, как работает функция.
Если функция отключена, тильда передается в родную команду как буквальная строка.
PS> cmd.exe /c echo ~
~
С включенной функцией PowerShell расширяет знак тильды перед передачей в родную команду.
PS> cmd.exe /c echo ~
C:\Users\username
Эта функция применяется только к Windows. На платформах, не использующих Windows, расширение тильды обрабатывается встроенно.
PSProfileDSCResource
Примечание.
Эта экспериментальная функция была добавлена в PowerShell 7.6-preview.6.
Выпуск PowerShell 7.6-preview.6 добавил эту функцию в качестве объявления для нового ресурса DSCv3. Флаг экспериментальной функции ничего не делает. Новый ресурс DSC версии 3 можно использовать независимо от того, включена ли эта функция или отключена.
Ресурс Microsoft.PowerShell/Profile позволяет управлять профилями PowerShell с помощью требуемой конфигурации состояния (DSC) версии 3. Этот выпуск содержит два новых файла в папке $PSHOME :
-
pwsh.profile.dsc.resource.json— файл манифеста ресурса DSC версии 3 -
pwsh.profile.resource.ps1— файл реализации ресурсов DSC версии 3
Ресурс поддерживает операции для получения, задания и экспорта содержимого профиля для различных типов профилей. Дополнительные сведения см. в заметках о pr PowerShell/PowerShell#26157.
PSRedirectToVariable
Примечание.
Эта экспериментальная функция была добавлена в PowerShell 7.5-preview.4. Эта функция стала основной в PowerShell 7.6-preview.6.
При включении эта функция добавляет поддержку перенаправления на диск Variable:. Эта функция позволяет перенаправить данные в переменную с помощью синтаксиса Variable:name . PowerShell проверяет целевой объект перенаправления, и если он использует поставщика переменной, то вызывает Set-Variable вместо Out-File.
В следующем примере показано, как перенаправить выходные данные команды в переменную:
. {
"Output 1"
Write-Warning "Warning, Warning!"
"Output 2"
} 3> Variable:warnings
$warnings
Output 1
Output 2
WARNING: Warning, Warning!
PSSerializeJSONLongEnumAsNumber
Примечание.
Эта экспериментальная функция была добавлена в PowerShell 7.5-preview.5.
Эта функция позволяет командлету ConvertTo-Json сериализовать любые значения перечисления как числовые, основанные на Int64/long или UInt64/ulong, вместо их строкового представления. Это согласуется с поведением сериализации перечислений других базовых типов перечислений, в которых командлет сериализует перечисления как их числовое значение. Используйте параметр EnumsAsStrings для сериализации в виде строкового представления.
Например:
# PSSerializeJSONLongEnumAsNumber disabled
@{
Key = [System.Management.Automation.Tracing.PowerShellTraceKeywords]::Cmdlets
} | ConvertTo-Json
# { "Key": "Cmdlets" }
# PSSerializeJSONLongEnumAsNumber enabled
@{
Key = [System.Management.Automation.Tracing.PowerShellTraceKeywords]::Cmdlets
} | ConvertTo-Json
# { "Key": 32 }
# -EnumsAsStrings to revert back to the old behaviour
@{
Key = [System.Management.Automation.Tracing.PowerShellTraceKeywords]::Cmdlets
} | ConvertTo-Json -EnumsAsStrings
# { "Key": "Cmdlets" }
PSSubsystemPluginModel
Примечание.
Эта функция стала основной в PowerShell 7.6-preview.6.
Эта функция активирует модель плагина подсистемы в PowerShell. Эта функция позволяет разделять компоненты System.Management.Automation.dll в отдельные подсистемы, находящиеся в их собственной сборке. Такое разделение сокращает объем дискового пространства ядра PowerShell и позволяет этим компонентам стать необязательными для минимальной установки PowerShell.
В настоящее время поддерживается только подсистема CommandPredictor. Эта подсистема используется вместе с модулем PSReadLine для обеспечения пользовательских плагинов прогнозирования. В будущем задание, CommandCompleter, удаленное взаимодействие и другие компоненты можно будет разделить на сборки подсистемы за пределами System.Management.Automation.dll.
Экспериментальная функция содержит новый командлет Get-PSSubsystem. Этот командлет доступен, только если функция включена. Этот командлет возвращает сведения о подсистемах, доступных в системе.
PowerShell