Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Podpora experimentálních funkcí v PowerShellu poskytuje mechanismus, aby mohly experimentální funkce existovat vedle stávajících stabilních funkcí v PowerShellu nebo modulech PowerShellu.
Experimentální funkce je jedna, kde návrh není finalizován. Tato funkce je dostupná pro uživatele, kteří můžou testovat a poskytovat zpětnou vazbu. Po dokončení experimentální funkce se změny návrhu stanou zásadními změnami.
Upozornění
Experimentální funkce nejsou určeny k použití v produkčním prostředí, protože změny mohou být zásadní. Experimentální funkce nejsou oficiálně podporované. Vážíme si ale všech připomínek a zpráv o chybách. Můžete zaznamenávat problémy ve zdrojovém úložišti GitHubu.
Další informace o povolení nebo zakázání těchto funkcí najdete v tématu about_Experimental_Features.
Životní cyklus experimentálních funkcí
Rutina Get-ExperimentalFeature vrátí všechny experimentální funkce dostupné pro PowerShell.
Experimentální funkce můžou pocházet z modulů nebo modulu PowerShellu. Experimentální funkce založené na modulech jsou dostupné až po importu modulu. V následujícím příkladu není načtena funkce PSDesiredStateConfiguration , takže PSDesiredStateConfiguration.InvokeDscResource
funkce není k dispozici.
Get-ExperimentalFeature
Name Enabled Source Description
---- ------- ------ -----------
PSCommandNotFoundSuggestion False PSEngine Recommend potential commands based on fuzzy searc…
PSCommandWithArgs False PSEngine Enable `-CommandWithArgs` parameter for pwsh
PSFeedbackProvider True PSEngine Replace the hard-coded suggestion framework with …
PSLoadAssemblyFromNativeCode False PSEngine Expose an API to allow assembly loading from nati…
PSModuleAutoLoadSkipOfflineFiles True PSEngine Module discovery will skip over files that are ma…
PSSerializeJSONLongEnumAsNumber True PSEngine Serialize enums based on long or ulong as an nume…
PSSubsystemPluginModel True PSEngine A plugin model for registering and un-registering…
K povolení nebo zakázání funkce použijte rutiny Enable-ExperimentalFeature a Disable-ExperimentalFeature. Aby se tato změna projevila, musíte spustit novou relaci PowerShellu. Chcete-li povolit funkci PSCommandNotFoundSuggestion
, spusťte následující příkaz.
Enable-ExperimentalFeature PSCommandNotFoundSuggestion
WARNING: Enabling and disabling experimental features do not take effect until next start
of PowerShell.
Když se experimentální funkce stane běžnou funkcí, už není k dispozici jako experimentální funkce, protože funkcionalita je teď součástí PowerShell enginu nebo modulu. Tato funkce se například PSAnsiRenderingFileInfo
stala hlavní součástí PowerShellu 7.3. Funkcionalitu funkce získáte automaticky.
Poznámka:
Některé funkce mají požadavky na konfiguraci, například proměnné předvoleb, které musí být nastavené, aby se z funkce získaly požadované výsledky.
Pokud je experimentální funkce ukončena, tato funkce už není dostupná v PowerShellu. Například funkce PSNativePSPathResolution
byla ukončena v PowerShellu 7.3.
Dostupné funkce
Tento článek popisuje experimentální funkce, které jsou k dispozici a jak tuto funkci používat.
Legenda:
- Ikona
označuje, že experimentální funkce je dostupná ve verzi PowerShellu.
- Ikona
označuje verzi PowerShellu, kde se experimentální funkce stala hlavní verzí.
- Ikona
označuje verzi PowerShellu, ve které byla experimentální funkce odebrána.
PsCommandNotFoundSuggestion
Poznámka:
Tato funkce se stala hlavní verzí PowerShellu 7.5-preview.5.
Doporučí potenciální příkazy na základě přibližné shody při hledání po 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
Poznámka:
Tato funkce se stala hlavní verzí PowerShellu 7.5-preview.5.
Tato funkce povolí -CommandWithArgs
parametr pro pwsh
. Tento parametr umožňuje spustit příkaz PowerShellu s argumenty. Na rozdíl od -Command
tento parametr naplní předdefinovanou proměnnou $args
, kterou může příkaz použít.
Prvním řetězcem je příkaz a následující řetězce oddělené prázdnými znaky jsou argumenty.
Příklad:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
Tento příklad vytvoří následující výstup:
arg: arg1
arg: arg2
Tato funkce byla přidána v PowerShellu 7.4-preview.2.
PSDesiredStateConfiguration.InvokeDscResource
Umožňuje kompilaci moF v systémech mimo Windows a umožňuje použití Invoke-DSCResource
bez LCM.
Od PowerShellu 7.2 se odebral modul PSDesiredStateConfiguration a tato funkce je ve výchozím nastavení zakázaná. Chcete-li tuto funkci povolit, je nutné nainstalovat modul PSDesiredStateConfiguration v2.0.5 z Galerie prostředí PowerShell a povolit tuto funkci.
DSC v3 nemá tuto experimentální funkci. DSC v3 podporuje pouze Invoke-DSCResource
a nepoužívá ani nepodporuje kompilaci MOF. Další informace najdete v tématu PowerShell Desired State Configuration v3.
PSFeedbackProvider
Když tuto funkci povolíte, PowerShell použije nového poskytovatele zpětné vazby, aby vám poskytl zpětnou vazbu, když se příkaz nenajde. Poskytovatel zpětné vazby je rozšiřitelný a je možné ho implementovat moduly třetích stran. Poskytovatel zpětné vazby může být používán jinými subsystémy, jako je například subsystém prediktoru, k poskytování prediktivních výsledků IntelliSense.
Tato funkce zahrnuje dva integrované poskytovatele zpětné vazby:
GeneralCommandErrorFeedback poskytuje stejnou funkcionalitu návrhu jako dnes.
UnixCommandNotFound, který je k dispozici v Linuxu, poskytuje zpětnou vazbu podobnou Bash.
UnixCommandNotFound slouží jako poskytovatel zpětné vazby i prediktor. Návrh z příkazu command-not-found se používá jak pro poskytování zpětné vazby, když nelze příkaz najít při interaktivním spuštění, tak pro prediktivní výsledky IntelliSense pro následující příkazový řádek.
Tato funkce byla přidána v PowerShellu 7.4-preview.3.
PSLoadAssemblyFromNativeCode
Zveřejňuje rozhraní API, které umožňuje načítání sestavení z nativního kódu.
PSModuleAutoLoadSkipOfflineFiles
Poznámka:
Tato funkce se stala hlavní verzí PowerShellu 7.5-preview.5.
Pokud je tato funkce zapnutá, PowerShell už neaktivuje stahování všech souborů obsažených ve složce z PSModulePath uživatele, pokud obsahuje složku od poskytovatele cloudu, jako je OneDrive. Jakýkoli soubor označený jako nestáhnutý bude přeskočen. Uživatelé, kteří používají poskytovatele cloudu k synchronizaci modulů mezi počítači, by měli složku modulu označit jako připnutou nebo ekvivalentní stav pro jiné poskytovatele než OneDrive. Označení složky modulu jako připnuté zajistí, že se soubory budou vždy uchovávat na disku.
Tato funkce byla přidána v PowerShellu 7.4-preview.1.
PSRedirectToVariable
Poznámka:
Tato experimentální funkce byla přidána v PowerShellu 7.5-preview.4.
Pokud je tato funkce povolená, přidá podporu pro přesměrování na jednotku Variable. Tato funkce umožňuje přesměrovat data do proměnné pomocí Variable:name
syntaxe. PowerShell zkontroluje cíl přesměrování a pokud se používá zprostředkovatel proměnných, volá Set-Variable
místo Out-File
.
Následující příklad ukazuje, jak přesměrovat výstup příkazu na proměnnou:
. {
"Output 1"
Write-Warning "Warning, Warning!"
"Output 2"
} 3> Variable:warnings
$warnings
Output 1
Output 2
WARNING: Warning, Warning!
PSSubsystemPluginModel
Tato funkce v PowerShellu umožňuje model pluginu subsystému. Tato funkce umožňuje oddělit komponenty System.Management.Automation.dll
do jednotlivých subsystémů, které se nacházejí ve vlastním sestavení. Toto oddělení snižuje nároky na disky základního modulu PowerShellu a umožňuje, aby se tyto komponenty staly volitelnými funkcemi pro minimální instalaci PowerShellu.
V současné době se podporuje pouze subsystém CommandPredictor . Tento subsystém se používá spolu s modulem PSReadLine k poskytování vlastních modulů plug-in pro predikce. V budoucnu by mohly být Job, CommandCompleter, Remoting a další komponenty odděleny do sestavení subsystémů mimo System.Management.Automation.dll
.
Experimentální funkce obsahuje novou rutinu Get-PSSubsystem. Tato rutina je dostupná jenom, když je funkce povolená. Tato rutina vrací informace o subsystémech dostupných v systému.
PSNativeWindowsTildeExpansion
Pokud je tato funkce povolená, PowerShell před vyvoláním nativních příkazů rozbalí necitovanou vlnovku (~
) do aktuální domovské složky uživatele. Následující příklady ukazují, jak tato funkce funguje.
Když je funkce zakázaná, tilda se předá nativnímu příkazu jako doslovný řetězec.
PS> cmd.exe /c echo ~
~
Když je tato funkce povolena, PowerShell expanduje znak tilda, než jej předá nativnímu příkazu.
PS> cmd.exe /c echo ~
C:\Users\username
Tato funkce platí jenom pro Windows. Na jiných platformách než Windows se rozšíření vlnovek zpracovává nativně.
Tato funkce byla přidána v PowerShellu 7.5-preview.2.
PSSerializeJSONLongEnumAsNumber
Tato funkce umožňuje rutině ConvertTo-Json serializovat všechny hodnoty výčtu na základě Int64/long
nebo UInt64/ulong
jako číselnou hodnotu namísto řetězcové reprezentace této hodnoty výčtu. Tím se chování serializace výčtu uvede do souladu s jinými základními typy výčtu, kde cmdlet serializuje výčty jako jejich číselnou hodnotu.
K serializaci jako řetězcové reprezentace použijte parametr EnumsAsStrings.
Příklad:
# 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" }