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 vanHide
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 InvokeWebRequestCommandV2
Invoke-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
}