about_Experimental_Features
PowerShell'deki Deneysel Özellikler desteği, deneysel özelliklerin PowerShell veya PowerShell modüllerindeki mevcut kararlı özelliklerle birlikte var olması için bir mekanizma sağlar.
Deneysel bir özellik, tasarımın sonlandırılmamasıdır. Bu özellik, kullanıcıların test edip geri bildirim sağlaması için kullanılabilir. Deneysel bir özellik sonlandırıldıktan sonra tasarım değişiklikleri çığır açan değişikliklere dönüşür. Değişikliklerin bozulmasına izin verildiğinden deneysel özelliklerin üretimde kullanılması amaçlanmamıştır.
Deneysel özellikler varsayılan olarak devre dışı bırakılır ve sistemin kullanıcısı veya yöneticisi tarafından açıkça etkinleştirilmesi gerekir.
Etkin deneysel özellikler, içindeki dosyasında $PSHOME
tüm kullanıcılar için veya belirli bir kullanıcının kullanıcıya özgü yapılandırma dosyasında listelenirpowershell.config.json
.
Not
Kullanıcı yapılandırma dosyasında etkinleştirilen deneysel özellikler, sistem yapılandırma dosyasında listelenen deneysel özelliklerden önceliklidir.
Deneysel Öznitelik
Experimental
Bazı kodları deneysel olarak bildirmek için özniteliğini kullanın.
Deneysel özelliğin Experimental
adını ve deneysel özellik etkinse gerçekleştirecek eylemi sağlayan özniteliği bildirmek için aşağıdaki söz dizimini kullanın:
[Experimental(NameOfExperimentalFeature, ExperimentAction)]
Modüller için biçiminde NameOfExperimentalFeature
olması <modulename>.<experimentname>
gerekir. ExperimentAction
parametresi belirtilmelidir ve yalnızca geçerli değerler şunlardır:
Show
, özellik etkinse bu deneysel özelliği göstermek anlamına gelirHide
bu deneysel özelliğin etkin olması durumunda gizlenmek anlamına gelir
C Dilinde Yazılan Modüllerde Deneysel Özellikleri Bildirme#
Deneysel Özellik bayraklarını kullanmak isteyen modül yazarları, özniteliğini kullanarak bir cmdlet'i Experimental
deneysel olarak bildirebilir.
[Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Show)]
[Cmdlet(Verbs.Invoke, "WebRequest")]
public class InvokeWebRequestCommandV2 : WebCmdletBaseV2 { ... }
PowerShell'de yazılan Modüllerde Deneysel Özellikleri Bildirme
PowerShell'de yazılan modül, deneysel cmdlet'leri bildirmek için özniteliğini de kullanabilir Experimental
:
function Enable-SSHRemoting {
[Experimental("MyRemoting.PSSSHRemoting", "Show")]
[CmdletBinding()]
param()
...
}
Deneysel bir özellik hakkındaki meta veriler modül bildiriminde tutulur. Modüldeki PrivateData.PSData.ExperimentalFeatures
deneysel özellikleri kullanıma açmak için modül bildiriminin özelliğini kullanın. ExperimentalFeatures
özelliği, özelliğin adını ve açıklamasını içeren bir karma tablo dizisidir.
Örneğin:
PrivateData = @{
PSData = @{
ExperimentalFeatures = @(
@{
Name = "PSWebCmdletV2"
Description = "Rewrite the web cmdlets for better performance"
},
@{
Name = "PSRestCmdletV2"
Description = "Rewrite the REST API cmdlets for better performance"
}
)
}
}
Birbirini Dışlayan Deneysel Özellikler
Deneysel bir özelliğin mevcut bir özellik veya başka bir deneysel özellik ile yan yana var olamayacağı durumlar vardır.
Örneğin, var olan bir cmdlet'i geçersiz kılan deneysel bir cmdlet'iniz olabilir. İki sürüm yan yana bir arada olamaz. Bu ExperimentAction.Hide
ayar, iki cmdlet'in yalnızca birinin aynı anda etkinleştirilmesine izin verir.
Bu örnekte yeni bir deneysel Invoke-WebRequest
cmdlet oluşturacağız.
InvokeWebRequestCommand
deneysel olmayan uygulamayı içerir.
InvokeWebRequestCommandV2
cmdlet'in deneysel sürümünü içerir.
kullanımı ExperimentAction.Hide
, iki özelliğin yalnızca birinin aynı anda etkinleştirilmesine izin verir:
[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 { ... }
MyWebCmdlets.PSWebCmdletV2
Deneysel özellik etkinleştirildiğinde, mevcut InvokeWebRequestCommand
uygulama gizlenir InvokeWebRequestCommandV2
ve uygulaması Invoke-WebRequest
sağlanır.
Bu, kullanıcıların yeni cmdlet'i denemesine ve geri bildirim sağlamasına ve gerektiğinde deneysel olmayan sürüme geri dönmelerine olanak tanır.
Cmdlet'lerde Deneysel Parametreler
Experimental
Özniteliği tek tek parametrelere de uygulanabilir. Bu, tamamen yeni bir cmdlet yerine mevcut bir cmdlet için deneysel bir parametre kümesi oluşturmanıza olanak tanır.
C# dilinde bir örnek aşağıda verilmiştir:
[Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Show)]
[Parameter(ParameterSet = "NewCompilation")]
public CompilationParameters CompileParameters { ... }
[Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Hide)]
[Parameter()]
public CodeDom CodeDom { ... }
PowerShell betiğinde farklı bir örnek aşağıda verilmiştir:
param(
[Experimental("MyModule.PSNewFeature", "Show")]
[string] $NewName,
[Experimental("MyModule.PSNewFeature", "Hide")]
[string] $OldName
)
Deneysel Bir Özelliğin Etkin Olup Olmadığını Denetleme
Kodunuzda, uygun eylemi gerçekleştirmeden önce deneysel özelliğinizin etkinleştirilip etkinleştirilmediğini denetlemeniz gerekir. Deneysel bir özelliğin sınıftaki statik IsEnabled()
yöntemi System.Management.Automation.ExperimentalFeature
kullanarak etkinleştirilip etkinleştirilmediğini belirleyebilirsiniz.
C# dilinde bir örnek aşağıda verilmiştir:
if (ExperimentalFeature.IsEnabled("MyModule.MyExperimentalFeature"))
{
// code specific to the experimental feature
}
PowerShell betiğinde bir örnek aşağıda verilmiştir:
if ([ExperimentalFeature]::IsEnabled("MyModule.MyExperimentalFeature"))
{
# code specific to the experimental feature
}
Ayrıca bkz.
PowerShell