Megosztás a következőn keresztül:


Kísérleti funkciók használata a PowerShellben

A PowerShell kísérleti funkcióinak támogatása olyan mechanizmust biztosít, amely lehetővé teszi, hogy a kísérleti funkciók együtt létezhessenek a PowerShell vagy a PowerShell-modulok meglévő stabil funkcióival.

A kísérleti funkció az, ahol a terv nem véglegesítve van. A funkció a felhasználók számára elérhető, hogy teszteljék és visszajelzést adjanak. A kísérleti funkciók véglegesítése után a tervezési módosítások kompatibilitástörő változásokká válnak.

Figyelemfelhívás

A kísérleti funkciók nem használhatók éles környezetben, mivel a módosítások kompatibilitástörőek lehetnek. A kísérleti funkciók hivatalosan nem támogatottak. Nagyra értékeljük azonban a visszajelzéseket és a hibajelentéseket. A GitHub-forrásadattárban fájlozhatja a problémákat.

A funkciók engedélyezéséről vagy letiltásáról további információt a about_Experimental_Features talál.

Kísérleti funkciók életciklusa

A Get-ExperimentalFeature parancsmag a PowerShellben elérhető összes kísérleti funkciót visszaadja. A kísérleti funkciók modulokból vagy a PowerShell-motorból származhatnak. A modulalapú kísérleti funkciók csak a modul importálása után érhetők el. Az alábbi példában a PSDesiredStateConfiguration nincs betöltve, így a PSDesiredStateConfiguration.InvokeDscResource funkció nem érhető el.

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…

A funkció engedélyezéséhez vagy letiltásához használja az Enable-ExperimentalFeature és a Disable-ExperimentalFeature parancsmagokat. A módosítás érvénybe lépéséhez új PowerShell-munkamenetet kell indítania. Futtassa a következő parancsot a PSCommandNotFoundSuggestion funkció engedélyezéséhez:

Enable-ExperimentalFeature PSFeedbackProvider
WARNING: Enabling and disabling experimental features do not take effect until next start
of PowerShell.

Amikor egy kísérleti funkció általánossá válik, az már nem érhető el kísérleti funkcióként, mivel a funkció most már a PowerShell-motor vagy -modul része. A funkció például általánossá vált a PSAnsiRenderingFileInfo PowerShell 7.3-ban. A funkció képességeit automatikusan megkapja.

Megjegyzés

Egyes funkciók konfigurációs követelményekkel( például beállításváltozókkal) rendelkeznek, amelyeket be kell állítani, hogy megkapják a kívánt eredményeket a szolgáltatásból.

Ha egy kísérleti funkció megszűnik, ez a funkció már nem érhető el a PowerShellben. A funkciót például megszüntették a PSNativePSPathResolution PowerShell 7.3-ban.

Elérhető funkciók

Ez a cikk az elérhető kísérleti funkciókat és a funkció használatát ismerteti.

Jelmagyarázat

  • Az Kísérleti ikon azt jelzi, hogy a kísérleti funkció elérhető a PowerShell verziójában
  • Az Mainstream ikon a PowerShell azon verzióját jelzi, ahol a kísérleti funkció általánossá vált
  • Az Megszűnt ikon a PowerShell azon verzióját jelzi, ahol a kísérleti funkció el lett távolítva
Név 7,4 7.5 7.6 (előzetes verzió)
PSCommandNotFoundSuggestion Kísérleti Mainstream Mainstream
PSCommandWithArgs Kísérleti Mainstream Mainstream
PSDesiredStateConfiguration.InvokeDscResource Kísérleti Kísérleti Kísérleti
PSFeedbackProvider Kísérleti Kísérleti Kísérleti
PSLoadAssemblyFromNativeCode Kísérleti Kísérleti Kísérleti
PSModuleAutoLoadSkipOfflineFiles Kísérleti Mainstream Mainstream
PSNativeWindowsTildeExpansion Kísérleti Kísérleti
PSRedirectToVariable Kísérleti Kísérleti
PSSerializeJSONLongEnumAsNumber Kísérleti Kísérleti
PSSubsystemPluginModel Kísérleti Kísérleti Kísérleti

PSParancsNemTalálhatóJavaslat

Megjegyzés

Ez a funkció általánossá vált a PowerShell 7.5-preview.5-ben.

Fuzzy egyeztetéses keresés alapján javasolja a lehetséges parancsokat a CommandNotFoundException után.

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

Megjegyzés

Ez a funkció általánossá vált a PowerShell 7.5-preview.5-ben.

Ez a funkció engedélyezi a -CommandWithArgs paramétert a pwsh számára. Ez a paraméter lehetővé teszi a PowerShell-parancsok argumentumokkal való végrehajtását. Ezzel ellentétben -Commandez a paraméter feltölti a $args parancs által használható beépített változót.

Az első sztring a parancs, a további szóközök által tagolt sztringek pedig az argumentumok.

Példa:

pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2

Ez a példa a következő kimenetet hozza létre:

arg: arg1
arg: arg2

Ez a funkció a PowerShell 7.4-preview.2-ben lett hozzáadva.

PSDesiredStateConfiguration.InvokeDscResource

Lehetővé teszi az MOF-ra való fordítást nem Windows rendszerű rendszereken, és lehetővé teszi az LCM nélküli használatot Invoke-DSCResource .

A PowerShell 7.2-től kezdve a PSDesiredStateConfiguration modul el lett távolítva, és ez a funkció alapértelmezés szerint le van tiltva. A szolgáltatás engedélyezéséhez telepítenie kell a PSDesiredStateConfiguration v2.0.5 modult a PowerShell-galéria, és engedélyeznie kell a funkciót.

A DSC v3 nem rendelkezik ezzel a kísérleti funkcióval. A DSC v3 csak a Invoke-DSCResource funkciót támogatja, és nem használja vagy támogatja az MOF-fordítást. További információ: PowerShell Desired State Configuration v3.

PSFeedbackProvider

Ha engedélyezi ezt a funkciót, a PowerShell egy új visszajelzési szolgáltatóval küld visszajelzést, ha egy parancs nem található. A visszajelzési szolgáltató bővíthető, és külső modulok is implementálhatók. A visszajelzési szolgáltatót más alrendszerek, például a prediktor alrendszer is használhatják a prediktív IntelliSense-eredmények biztosításához.

Ez a funkció két beépített visszajelzési szolgáltatót tartalmaz:

  • A GeneralCommandErrorFeedback ugyanazt a javaslati funkciót szolgálja ki, amely ma is létezik

  • A Linuxon elérhető UnixCommandNotFound a bashhez hasonló visszajelzést nyújt.

    A UnixCommandNotFound visszajelzési szolgáltatóként és prediktorként is szolgál. A command-not-found parancs javaslatát egyaránt arra használja a rendszer, hogy visszajelzést küldjön, ha a parancs nem található interaktív futtatásban, és prediktív IntelliSense-eredményeket biztosít a következő parancssorhoz.

Ez a funkció a PowerShell 7.4-preview.3-ban lett hozzáadva.

PSLoadAssemblyFromNativeCode

Egy API-t tesz elérhetővé, amely lehetővé teszi az assembly natív kódból történő betöltését.

PSModuleAutoLoadSkipOfflineFiles

Megjegyzés

Ez a funkció általánossá vált a PowerShell 7.5-preview.5-ben.

Ha ez a funkció engedélyezve van, ha egy felhasználó PSModulePath-kiszolgálója tartalmaz egy felhőszolgáltatótól származó mappát, például a OneDrive-ot, a PowerShell többé nem aktiválja az adott mappában található összes fájl letöltését. A program kihagyja a nem letöltöttként megjelölt fájlokat. Azok a felhasználók, akik felhőszolgáltatókkal szinkronizálják a modulokat a gépek között, a modulmappát rögzítettként vagy a OneDrive-on kívüli szolgáltatók számára egyenértékű állapotként kell megjelölniük. A modulmappa rögzítettként való megjelölésével biztosítható, hogy a fájlok mindig a lemezen legyenek tárolva.

Ez a funkció a PowerShell 7.4-preview.1-ben lett hozzáadva.

PSRedirectToVariable

Megjegyzés

Ez a kísérleti funkció a PowerShell 7.5-preview.4-ben lett hozzáadva.

Ha engedélyezve van, ez a funkció támogatja a változó: meghajtóra való átirányítást. Ez a funkció lehetővé teszi az adatok egy változóba való átirányítását a Variable:name szintaxis használatával. A PowerShell az átirányítás célját veszi figyelembe, és ha a változószolgáltatót használja, Set-Variablehelyett Out-File hív meg.

Az alábbi példa bemutatja, hogyan irányíthatja át egy parancs kimenetét egy változóra:

. {
    "Output 1"
    Write-Warning "Warning, Warning!"
    "Output 2"
} 3> Variable:warnings
$warnings
Output 1
Output 2
WARNING: Warning, Warning!

PSSubsystemPluginModel

Ez a funkció lehetővé teszi az alrendszer beépülő modul modelljét a PowerShellben. A funkció lehetővé teszi, hogy System.Management.Automation.dll összetevőit önálló alrendszerekké válasszák szét, amelyek a saját összeállításukban találhatók. Ez az elkülönítés csökkenti az alapvető PowerShell-motor lemezigényét, és lehetővé teszi, hogy ezek az összetevők választható funkciókká váljanak a Minimális PowerShell-telepítéshez.

Jelenleg csak a CommandPredictor alrendszer támogatott. Ezt az alrendszert a PSReadLine modullal együtt használjuk egyéni előrejelzési beépülő modulok biztosítására. A jövőben a Feladat, CommandCompleter, Remoting és más összetevők különválaszthatók a System.Management.Automation.dll kívüli alrendszer-assemblékbe.

A kísérleti funkció tartalmaz egy új parancsmagot, a Get-PSSubsystem-t. Ez a parancsmag csak akkor érhető el, ha a funkció engedélyezve van. Ez a parancsmag a rendszeren elérhető alrendszerekről ad vissza információkat.

PSNativeWindowsTildeExpansion

Ha ez a jellemző engedélyezve van, a PowerShell az idézőjelek nélküli tilde (~) jelet kibontja a felhasználó aktuális otthoni könyvtárába a natív parancsok végrehajtása előtt. Az alábbi példák a funkció működését mutatják be.

Ha a funkció le van tiltva, a tilde szó szerinti sztringként lesz átadva a natív parancsnak.

PS> cmd.exe /c echo ~
~

Ha a funkció engedélyezve van, a PowerShell kiterjeszti a tilde-t, mielőtt a natív parancsnak átadják.

PS> cmd.exe /c echo ~
C:\Users\username

Ez a funkció csak a Windowsra vonatkozik. A nem Windows-platformokon a tilde-bővítés natív módon történik.

Ez a funkció a PowerShell 7.5-preview.2-ben lett hozzáadva.

PSSerializeJSONLongEnumAsNumber

Ez a funkció lehetővé teszi a ConvertTo-Json parancsmagnak, hogy bármely enumerációs értéket az Int64/long vagy UInt64/ulong alapján numerikus értékként sorosítson, nem pedig az adott enumerációs érték szöveges megjelenítéseként. Ez az enumok szerializálásának viselkedését más enum-alaptípusokhoz igazítja, ahol a parancsmag az enumerációkat numerikus értékként szerializálja. Sztringábrázolásként az EnumsAsStrings paraméterrel szerializálhatja.

Példa:

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