Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O suporte para Funcionalidades Experimentais no PowerShell fornece um mecanismo para que as funcionalidades experimentais coexistam com as funcionalidades estáveis existentes no PowerShell ou nos módulos PowerShell.
Um recurso experimental é aquele em que o projeto não é finalizado. O recurso está disponível para os usuários testarem e fornecerem feedback. Uma vez que um recurso experimental é finalizado, as mudanças de design tornam-se mudanças de rutura.
Atenção
Os recursos experimentais não se destinam a ser usados na produção, uma vez que as mudanças podem ser disruptivas. Funcionalidades experimentais não têm suporte oficial. No entanto, agradecemos qualquer feedback e relatórios de bugs. Você pode arquivar problemas no repositório de origem do GitHub.
Para obter mais informações sobre como habilitar ou desabilitar esses recursos, consulte about_Experimental_Features.
Ciclo de vida do recurso experimental
O cmdlet Get-ExperimentalFeature retorna todos os recursos experimentais disponíveis para o PowerShell.
Os recursos experimentais podem vir de módulos ou do mecanismo do PowerShell. Os recursos experimentais baseados em módulo só estão disponíveis após a importação do módulo. No exemplo a seguir, o PSDesiredStateConfiguration não está carregado, portanto, o PSDesiredStateConfiguration.InvokeDscResource recurso não está disponível.
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…
Utilize os cmdlets Enable-ExperimentalFeature e Disable-ExperimentalFeature para ativar ou desativar uma funcionalidade. Você deve iniciar uma nova sessão do PowerShell para que essa alteração entre em vigor. Execute o seguinte comando para habilitar o PSCommandNotFoundSuggestion recurso:
Enable-ExperimentalFeature PSFeedbackProvider
WARNING: Enabling and disabling experimental features do not take effect until next start
of PowerShell.
Quando um recurso experimental se torna comum, ele não está mais disponível como um recurso experimental porque a funcionalidade agora faz parte do mecanismo ou módulo do PowerShell. Por exemplo, o PSAnsiRenderingFileInfo recurso tornou-se mainstream no PowerShell 7.3. Você obtém a funcionalidade do recurso automaticamente.
Nota
Alguns recursos têm requisitos de configuração, como variáveis de preferência, que devem ser definidos para obter os resultados desejados do recurso.
Quando um recurso experimental é descontinuado, esse recurso não está mais disponível no PowerShell. Por exemplo, o recurso PSNativePSPathResolution foi descontinuado no PowerShell 7.3.
Funcionalidades disponíveis
Este artigo descreve os recursos experimentais disponíveis e como usá-los.
Legenda
- O
ícone indica que o recurso experimental está disponível na versão do PowerShell
- O
ícone indica a versão do PowerShell em que o recurso experimental se tornou mainstream
- O
ícone indica a versão do PowerShell onde o recurso experimental foi removido
SugestãoDeComandoNãoEncontradoPS
Nota
Esse recurso tornou-se corrente no PowerShell 7.5-preview.5.
Recomenda comandos potenciais com base na pesquisa de correspondência difusa após um 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
Nota
Esse recurso tornou-se corrente no PowerShell 7.5-preview.5.
Esse recurso habilita o -CommandWithArgs parâmetro para pwsh. Esse parâmetro permite executar um comando do PowerShell com argumentos. Ao contrário de -Command, este parâmetro preenche a variável interna $args que pode ser usada pelo comando.
A primeira cadeia de caracteres é o comando e as cadeias subsequentes delimitadas por espaço em branco são os argumentos.
Por exemplo:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
Este exemplo produz a seguinte saída:
arg: arg1
arg: arg2
Esse recurso foi adicionado no PowerShell 7.4-preview.2.
PSDesiredStateConfiguration.InvokeDscResource
Permite a compilação para MOF em sistemas não-Windows e permite o uso de Invoke-DSCResource sem um LCM.
A partir do PowerShell 7.2, o módulo PSDesiredStateConfiguration foi removido e esse recurso está desabilitado por padrão. Para habilitar esse recurso, você deve instalar o módulo PSDesiredStateConfiguration v2.0.5 da Galeria do PowerShell e habilitar o recurso.
O DSC v3 não tem esse recurso experimental. DSC v3 suporta apenas Invoke-DSCResource e não usa ou suporta compilação MOF. Para obter mais informações, consulte Configuração de estado desejado do PowerShell v3.
PSFeedbackProvider
Quando você habilita esse recurso, o PowerShell usa um novo provedor de comentários para fornecer comentários quando um comando não pode ser encontrado. O provedor de feedback é extensível e pode ser implementado por módulos de terceiros. O provedor de feedback pode ser usado por outros subsistemas, como o subsistema de predição, para fornecer resultados preditivos do IntelliSense.
Esta funcionalidade inclui dois fornecedores de feedback incorporados:
GeneralCommandErrorFeedback serve a mesma funcionalidade de sugestão existente hoje
UnixCommandNotFound, disponível no Linux, fornece feedback semelhante ao bash.
O UnixCommandNotFound serve como um provedor de feedback e um preditor. A sugestão do comando command-not-found é usada para fornecer o feedback quando o comando não pode ser encontrado em uma execução interativa e para fornecer resultados preditivos do IntelliSense para a próxima linha de comando.
Esse recurso foi adicionado no PowerShell 7.4-preview.3.
PSLoadAssemblyFromNativeCode
Expõe uma API para permitir o carregamento de assembly a partir de código nativo.
PSModuleAutoLoadSkipOfflineFiles
Nota
Esse recurso tornou-se corrente no PowerShell 7.5-preview.5.
Com esse recurso habilitado, se o PSModulePath de um usuário contiver uma pasta de um provedor de nuvem, como o OneDrive, o PowerShell não acionará mais o download de todos os arquivos contidos nessa pasta. Qualquer arquivo marcado como não baixado é ignorado. Os usuários que usam provedores de nuvem para sincronizar seus módulos entre máquinas devem marcar a pasta do módulo como Fixo ou o status equivalente para provedores que não sejam o OneDrive. Assinalar a pasta do módulo como Fixo garante que os ficheiros sejam sempre mantidos no disco.
Esse recurso foi adicionado no PowerShell 7.4-preview.1.
DesviarParaVariávelPS
Nota
Esse recurso experimental foi adicionado no PowerShell 7.5-preview.4.
Quando ativada, esta função adiciona suporte para redirecionamento para a unidade "Variable:". Esse recurso permite redirecionar dados para uma variável usando a Variable:name sintaxe. O PowerShell inspeciona o destino do redirecionamento e, se usar o provedor de variáveis, chama Set-Variable em vez de Out-File.
O exemplo a seguir mostra como redirecionar a saída de um comando para uma variável:
. {
"Output 1"
Write-Warning "Warning, Warning!"
"Output 2"
} 3> Variable:warnings
$warnings
Output 1
Output 2
WARNING: Warning, Warning!
PSSubsystemPluginModel
Esse recurso habilita o modelo de plug-in do subsistema no PowerShell. O recurso torna possível separar componentes de System.Management.Automation.dll em subsistemas individuais que residem nas suas próprias montagens. Essa separação reduz o espaço ocupado pelo disco do mecanismo principal do PowerShell e permite que esses componentes se tornem recursos opcionais para uma instalação mínima do PowerShell.
Atualmente, apenas o subsistema CommandPredictor é suportado. Este subsistema é usado junto com o módulo PSReadLine para fornecer plug-ins de previsão personalizados. No futuro, Job, CommandCompleter, Remoting e outros componentes poderiam ser separados em montagens de subsistemas fora do System.Management.Automation.dll.
O recurso experimental inclui um novo cmdlet, Get-PSSubsystem. Esse cmdlet só está disponível quando o recurso está habilitado. Este cmdlet retorna informações sobre os subsistemas disponíveis no sistema.
PSNativeWindowsTildeExpansion
Quando esta funcionalidade está ativada, o PowerShell expande o til não entre aspas (~) para a pasta inicial do utilizador antes de invocar comandos nativos. Os exemplos a seguir mostram como o recurso funciona.
Com o recurso desativado, o til é passado para o comando nativo como uma cadeia de caracteres literal.
PS> cmd.exe /c echo ~
~
Com o recurso habilitado, o PowerShell expande o til antes de ser passado para o comando nativo.
PS> cmd.exe /c echo ~
C:\Users\username
Esta funcionalidade aplica-se apenas ao Windows. Em plataformas que não sejam Windows, a expansão tilde é tratada nativamente.
Esse recurso foi adicionado no PowerShell 7.5-preview.2.
PSSerializeJSONLongEnumAsNumber
Esse recurso permite que o cmdlet ConvertTo-Json serialize quaisquer valores de enum, baseando-se em Int64/long ou UInt64/ulong, como um valor numérico em vez da representação em cadeia de caracteres desse valor de enum. Isso alinha o comportamento da serialização de enum com outros tipos de base de enum, onde o cmdlet serializa enums como seu valor numérico. Utilize o parâmetro EnumsAsStrings para serializar como a representação em cadeia de caracteres.
Por exemplo:
# 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" }