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
----                             ------- ------   -----------
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…

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 PSCommandNotFoundSuggestion
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ó funkcióit automatikusan megkapja.

Feljegyzé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
PSDesiredStateConfiguration.InvokeDscResource Kísérleti Kísérleti Kísérleti
PSSubsystemPluginModel Kísérleti Kísérleti Kísérleti
PSLoadAssemblyFromNativeCode Kísérleti Kísérleti Kísérleti
PSFeedbackProvider Kísérleti Kísérleti Kísérleti
PSModuleAutoLoadSkipOfflineFiles Kísérleti Mainstream Mainstream
PSCommandWithArgs 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

PSCommandNotFoundSuggestion

Feljegyzés

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

A CommandNotFoundException utáni homályos keresés alapján javasolja a lehetséges parancsokat.

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

Feljegyzés

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

Ez a funkció engedélyezi a paramétert a -CommandWithArgs következőhöz pwsh: . 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 az MOF-fordítást támogatja Invoke-DSCResource és nem támogatja. 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 a szerelvény betöltését a natív kódból.

PSModuleAutoLoadSkipOfflineFiles

Feljegyzé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

Feljegyzé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 az általa hívott Set-Variable változószolgáltatót használja.Out-File

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 az egyes alrendszerek összetevőinek elkülönítését System.Management.Automation.dll a saját szerelvényükben. 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, a CommandCompleter, az Újramoting és más összetevők különválaszthatók a kívül eső System.Management.Automation.dllalrendszer-szerelvényekre.

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 funkció engedélyezve van, a PowerShell a natív parancsok meghívása előtt kibontja a nemquoted tilde (~) fájlt a felhasználó aktuális kezdőlapmappájába. 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, hogy a ConvertTo-Json parancsmag UInt64/ulong Ez az enumerálás viselkedését más enum-alaptípusokhoz igazítja, ahol a parancsmag numerikus értékként szerializálja az enumerálást. 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" }