about_Experimental_Features

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. 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 alapértelmezés szerint le vannak tiltva, és kifejezetten engedélyeznie kell a rendszer felhasználójának vagy rendszergazdájának.

Az engedélyezett kísérleti funkciók a fájlban $PSHOME szerepelnek az powershell.config.json összes felhasználó vagy egy adott felhasználó felhasználóspecifikus konfigurációs fájljában.

Feljegyzés

A felhasználói konfigurációs fájlban engedélyezett kísérleti funkciók elsőbbséget élveznek a rendszerkonfigurációs fájlban felsorolt kísérleti funkciókkal szemben.

A kísérleti attribútum

Experimental Az attribútum használatával deklarálhat néhány kódot kísérletiként.

Az alábbi szintaxissal deklarálhatja a Experimental kísérleti funkció nevét és a kísérleti funkció engedélyezése esetén végrehajtandó műveletet:

[Experimental(NameOfExperimentalFeature, ExperimentAction)]

A modulok esetében a NameOfExperimentalFeature következő formátumot kell követnie <modulename>.<experimentname>: . A ExperimentAction paramétert meg kell adni, és az egyetlen érvényes érték a következő:

  • Show azt jelenti, hogy megjeleníti ezt a kísérleti funkciót, ha a funkció engedélyezve van
  • Hide azt jelenti, hogy elrejtse ezt a kísérleti funkciót, ha a funkció engedélyezve van

Kísérleti funkciók deklarálása c nyelven írt modulokban#

A kísérleti funkciók jelzőit használni kívánó modulszerzők az attribútum használatával Experimental kísérletiként deklarálhatnak egy parancsmagot.

[Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Show)]
[Cmdlet(Verbs.Invoke, "WebRequest")]
public class InvokeWebRequestCommandV2 : WebCmdletBaseV2 { ... }

Kísérleti funkciók deklarálása PowerShell-ben írt modulokban

A PowerShellben írt modul a kísérleti parancsmagok deklarálásához is használhatja az Experimental attribútumot:

function Enable-SSHRemoting {
    [Experimental("MyRemoting.PSSSHRemoting", "Show")]
    [CmdletBinding()]
    param()
    ...
}

A kísérleti funkciók metaadatai a moduljegyzékben maradnak. PrivateData.PSData.ExperimentalFeatures A moduljegyzék tulajdonságával tegye közzé a modul kísérleti funkcióit. A ExperimentalFeatures tulajdonság a funkció nevét és leírását tartalmazó kivonattáblák tömbje.

Példa:

PrivateData = @{
  PSData = @{
    ExperimentalFeatures = @(
      @{
          Name = "PSWebCmdletV2"
          Description = "Rewrite the web cmdlets for better performance"
      },
      @{
          Name = "PSRestCmdletV2"
          Description = "Rewrite the REST API cmdlets for better performance"
      }
    )
  }
}

Kölcsönösen kizáró kísérleti funkciók

Vannak olyan esetek, amikor egy kísérleti funkció nem létezhet egymás mellett egy meglévő funkcióval vagy egy másik kísérleti funkcióval.

Létrehozhat például egy kísérleti parancsmagot, amely felülír egy meglévő parancsmagot. A két verzió nem létezhet egymás mellett. A ExperimentAction.Hide beállítás lehetővé teszi, hogy egyszerre csak a két parancsmag egyike legyen engedélyezve.

Ebben a példában létrehozunk egy új kísérleti Invoke-WebRequest parancsmagot. InvokeWebRequestCommand a nem kísérleti megvalósítást tartalmazza. InvokeWebRequestCommandV2 A parancsmag kísérleti verzióját tartalmazza.

A használat ExperimentAction.Hide lehetővé teszi, hogy egyszerre csak a két funkció egyike legyen engedélyezve:

[Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Show)]
[Cmdlet(Verbs.Invoke, "WebRequest")]
public class InvokeWebRequestCommandV2 : WebCmdletBaseV2 { ... }

[Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Hide)]
[Cmdlet(Verbs.Invoke, "WebRequest")]
public class InvokeWebRequestCommand : WebCmdletBase { ... }

Ha a MyWebCmdlets.PSWebCmdletV2 kísérleti funkció engedélyezve van, a meglévő InvokeWebRequestCommand implementáció rejtett, és a InvokeWebRequestCommandV2Invoke-WebRequest.

Ez lehetővé teszi, hogy a felhasználók kipróbálják az új parancsmagot, és visszajelzést adjanak, majd szükség esetén térjenek vissza a nem kísérleti verzióra.

Kísérleti paraméterek a parancsmagokban

Az Experimental attribútum egyéni paraméterekre is alkalmazható. Ez lehetővé teszi, hogy egy teljesen új parancsmag helyett egy meglévő parancsmaghoz hozzon létre egy kísérleti paraméterkészletet.

Íme egy példa a C#-ban:

[Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Show)]
[Parameter(ParameterSet = "NewCompilation")]
public CompilationParameters CompileParameters { ... }

[Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Hide)]
[Parameter()]
public CodeDom CodeDom { ... }

Íme egy másik példa a PowerShell-szkriptben:

param(
    [Experimental("MyModule.PSNewFeature", "Show")]
    [string] $NewName,

    [Experimental("MyModule.PSNewFeature", "Hide")]
    [string] $OldName
)

Annak ellenőrzése, hogy engedélyezve van-e egy kísérleti funkció

A kódban a megfelelő művelet végrehajtása előtt ellenőriznie kell, hogy engedélyezve van-e a kísérleti funkció. Meghatározhatja, hogy egy kísérleti funkció engedélyezve van-e az osztály statikus IsEnabled() metódusával System.Management.Automation.ExperimentalFeature .

Íme egy példa a C#-ban:

if (ExperimentalFeature.IsEnabled("MyModule.MyExperimentalFeature"))
{
   // code specific to the experimental feature
}

Íme egy példa a PowerShell-szkriptben:

if ([ExperimentalFeature]::IsEnabled("MyModule.MyExperimentalFeature"))
{
  # code specific to the experimental feature
}

Lásd még