Delen via


Experimentele functies gebruiken in PowerShell

De ondersteuning voor experimentele functies in PowerShell biedt een mechanisme voor experimentele functies die naast bestaande stabiele functies in PowerShell- of PowerShell-modules kunnen worden gebruikt.

Een experimentele functie is een functie waarbij het ontwerp niet is voltooid. De functie is beschikbaar voor gebruikers om feedback te testen en te geven. Zodra een experimentele functie is voltooid, worden de ontwerpwijzigingen belangrijke wijzigingen.

Let op

Experimentele functies zijn niet bedoeld voor gebruik in productie omdat de wijzigingen mogen worden onderbroken. Experimentele functies worden niet officieel ondersteund. We waarderen echter eventuele feedback en foutenrapporten. U kunt problemen in de GitHub-bronopslagplaats indienen.

Zie about_Experimental_Features voor meer informatie over het in- of uitschakelen van deze functies.

Levenscyclus van experimentele functies

De cmdlet Get-ExperimentalFeature retourneert alle experimentele functies die beschikbaar zijn voor PowerShell. Experimentele functies kunnen afkomstig zijn van modules of de PowerShell-engine. Experimentele functies op basis van modules zijn alleen beschikbaar nadat u de module hebt geïmporteerd. In het volgende voorbeeld wordt psDesiredStateConfiguration niet geladen, dus de PSDesiredStateConfiguration.InvokeDscResource functie is niet beschikbaar.

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…

Gebruik de cmdlets Enable-ExperimentalFeature en Disable-ExperimentalFeature om een functie in of uit te schakelen. U moet een nieuwe PowerShell-sessie starten om deze wijziging van kracht te laten zijn. Voer de volgende opdracht uit om de PSCommandNotFoundSuggestion functie in te schakelen:

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

Wanneer een experimentele functie algemeen wordt, is deze niet meer beschikbaar als experimentele functie omdat de functionaliteit nu deel uitmaakt van de PowerShell-engine of -module. De PSAnsiRenderingFileInfo functie is bijvoorbeeld mainstream geworden in PowerShell 7.3. U krijgt automatisch de functionaliteit van de functie.

Notitie

Sommige functies hebben configuratievereisten, zoals voorkeursvariabelen, die moeten worden ingesteld om de gewenste resultaten van de functie te verkrijgen.

Wanneer een experimentele functie wordt stopgezet, is deze functie niet meer beschikbaar in PowerShell. De PSNativePSPathResolution functie is bijvoorbeeld stopgezet in PowerShell 7.3.

Beschikbare functies

In dit artikel worden de experimentele functies beschreven die beschikbaar zijn en hoe u de functie kunt gebruiken.

Legenda

  • Het Experimenteel pictogram geeft aan dat de experimentele functie beschikbaar is in de versie van PowerShell
  • Het Hoofdstroom pictogram geeft de versie van PowerShell aan waarin de experimentele functie mainstream werd
  • Het Buiten gebruik pictogram geeft de versie van PowerShell aan waar de experimentele functie is verwijderd
Naam 7.4 7.5 7.6 (preview)
PSCommandNotFoundSuggestion Experimenteel Hoofdstroom Hoofdstroom
PSDesiredStateConfiguration.InvokeDscResource Experimenteel Experimenteel Experimenteel
PSSubsystemPluginModel Experimenteel Experimenteel Experimenteel
PSLoadAssemblyFromNativeCode Experimenteel Experimenteel Experimenteel
PSFeedbackProvider Experimenteel Experimenteel Experimenteel
PSModuleAutoLoadSkipOfflineFiles Experimenteel Hoofdstroom Hoofdstroom
PSCommandWithArgs Experimenteel Hoofdstroom Hoofdstroom
PSNativeWindowsTildeExpansion Experimenteel Experimenteel
PSRedirectToVariable Experimenteel Experimenteel
PSSerializeJSONLongEnumAsNumber Experimenteel Experimenteel

PSCommandNotFoundSuggestion

Notitie

Deze functie werd algemeen in PowerShell 7.5-preview.5.

Raadt mogelijke opdrachten aan op basis van fuzzy overeenkomende zoekopdrachten na een 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

Notitie

Deze functie werd algemeen in PowerShell 7.5-preview.5.

Met deze functie wordt de -CommandWithArgs parameter ingeschakeld voor pwsh. Met deze parameter kunt u een PowerShell-opdracht uitvoeren met argumenten. In tegenstelling tot -Commanddeze parameter wordt de $args ingebouwde variabele ingevuld die door de opdracht kan worden gebruikt.

De eerste tekenreeks is de opdracht en de volgende tekenreeksen gescheiden door witruimte zijn de argumenten.

Voorbeeld:

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

arg: arg1
arg: arg2

Deze functie is toegevoegd in PowerShell 7.4-preview.2.

PSDesiredStateConfiguration.InvokeDscResource

Maakt compilatie naar MOF op niet-Windows-systemen mogelijk en maakt het gebruik van Invoke-DSCResource zonder LCM mogelijk.

Vanaf PowerShell 7.2 is de PSDesiredStateConfiguration-module verwijderd en deze functie is standaard uitgeschakeld. Als u deze functie wilt inschakelen, moet u de PSDesiredStateConfiguration v2.0.5-module installeren vanuit de PowerShell Gallery en de functie inschakelen.

DSC v3 heeft deze experimentele functie niet. DSC v3 ondersteunt Invoke-DSCResource alleen MOF-compilatie en biedt geen ondersteuning voor MOF-compilatie. Zie PowerShell Desired State Configuration v3 voor meer informatie.

PSFeedbackProvider

Wanneer u deze functie inschakelt, gebruikt PowerShell een nieuwe feedbackprovider om u feedback te geven wanneer een opdracht niet kan worden gevonden. De feedbackprovider is uitbreidbaar en kan worden geïmplementeerd door modules van derden. De feedbackprovider kan worden gebruikt door andere subsystemen, zoals het predictorsubsysteem, om voorspellende IntelliSense-resultaten te bieden.

Deze functie bevat twee ingebouwde feedbackproviders:

  • GeneralCommandErrorFeedback biedt dezelfde suggestiefunctionaliteit die momenteel bestaat

  • UnixCommandNotFound, beschikbaar op Linux, biedt feedback die vergelijkbaar is met bash.

    UnixCommandNotFound fungeert als zowel een feedbackprovider als een predictor. De suggestie van de opdracht die niet is gevonden, wordt gebruikt voor het geven van feedback wanneer de opdracht niet kan worden gevonden in een interactieve uitvoering en voor het bieden van voorspellende IntelliSense-resultaten voor de volgende opdrachtregel.

Deze functie is toegevoegd in PowerShell 7.4-preview.3.

PSLoadAssemblyFromNativeCode

Hiermee wordt een API beschikbaar gesteld om het laden van assembly's vanuit systeemeigen code toe te staan.

PSModuleAutoLoadSkipOfflineFiles

Notitie

Deze functie werd algemeen in PowerShell 7.5-preview.5.

Als deze functie is ingeschakeld, wordt het downloaden van alle bestanden in die map niet meer geactiveerd als het PSModulePath van een gebruiker een map van een cloudprovider bevat, zoals OneDrive. Elk bestand dat is gemarkeerd als niet gedownload, wordt overgeslagen. Gebruikers die cloudproviders gebruiken om hun modules tussen computers te synchroniseren, moeten de modulemap markeren als Vastgemaakt of de equivalente status voor andere providers dan OneDrive. Als u de modulemap markeert als Vastgemaakt , zorgt u ervoor dat de bestanden altijd op schijf worden bewaard.

Deze functie is toegevoegd in PowerShell 7.4-preview.1.

PSRedirectToVariable

Notitie

Deze experimentele functie is toegevoegd in PowerShell 7.5-preview.4.

Wanneer deze functie is ingeschakeld, voegt deze functie ondersteuning toe voor het omleiden naar het variabele station. Met deze functie kunt u gegevens omleiden naar een variabele met behulp van de variable:name syntaxis. PowerShell inspecteert het doel van de omleiding en als deze gebruikmaakt van de variabele provider die wordt aanroepen Set-Variable in plaats Out-Filevan .

In het volgende voorbeeld ziet u hoe u de uitvoer van een opdracht omleidt naar een variabele:

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

PSSubsystemPluginModel

Met deze functie wordt het model van de subsysteeminvoegtoepassing in PowerShell ingeschakeld. De functie maakt het mogelijk om onderdelen van System.Management.Automation.dll afzonderlijke subsystemen te scheiden die zich in hun eigen assembly bevinden. Deze scheiding vermindert de schijfvoetafdruk van de PowerShell-kernengine en stelt deze onderdelen in staat optionele functies te worden voor een minimale PowerShell-installatie.

Op dit moment wordt alleen het CommandPredictor-subsysteem ondersteund. Dit subsysteem wordt samen met de PSReadLine-module gebruikt om aangepaste voorspellingsinvoegtoepassingen te bieden. In de toekomst kunnen Job, CommandCompleter, Remoting en andere onderdelen worden gescheiden in subsysteemassembly's buiten System.Management.Automation.dll.

De experimentele functie bevat een nieuwe cmdlet, Get-PSSubsystem. Deze cmdlet is alleen beschikbaar wanneer de functie is ingeschakeld. Deze cmdlet retourneert informatie over de subsystemen die beschikbaar zijn op het systeem.

PSNativeWindowsTildeExpansion

Wanneer deze functie is ingeschakeld, breidt PowerShell ongequoteerde tilde (~) uit naar de huidige basismap van de gebruiker voordat systeemeigen opdrachten worden aanroepen. In de volgende voorbeelden ziet u hoe de functie werkt.

Als de functie is uitgeschakeld, wordt de tilde als een letterlijke tekenreeks doorgegeven aan de systeemeigen opdracht.

PS> cmd.exe /c echo ~
~

Als de functie is ingeschakeld, wordt de tilde uitgebreid voordat deze wordt doorgegeven aan de systeemeigen opdracht.

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

Deze functie is alleen van toepassing op Windows. Op niet-Windows-platforms wordt tilde-uitbreiding systeemeigen afgehandeld.

Deze functie is toegevoegd in PowerShell 7.5-preview.2.

PSSerializeJSONLongEnumAsNumber

Met deze functie kan de cmdlet ConvertTo-Json alle enumwaarden serialiseren op Int64/long basis van of UInt64/ulong als een numerieke waarde in plaats van de tekenreeksweergave van die enumwaarde. Hiermee wordt het gedrag van enumserialisatie uitgelijnd met andere enumbasistypen waarbij de cmdlet opsommingen serialiseert als hun numerieke waarde. Gebruik de parameter EnumsAsStrings om te serialiseren als de tekenreeksweergave.

Voorbeeld:

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