Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dukungan Fitur Eksperimental di PowerShell menyediakan mekanisme untuk fitur eksperimental agar hidup berdampingan dengan fitur stabil yang ada di modul PowerShell atau PowerShell.
Fitur eksperimental adalah salah satu tempat desain tidak diselesaikan. Fitur ini tersedia bagi pengguna untuk menguji dan memberikan umpan balik. Setelah fitur eksperimental diakhiri, perubahan desain menjadi perubahan besar. Fitur eksperimental sebaiknya tidak digunakan dalam produksi karena perubahan dapat bersifat signifikan.
Fitur eksperimental dinonaktifkan secara default dan perlu diaktifkan secara eksplisit oleh pengguna atau administrator sistem.
Fitur eksperimental yang diaktifkan tercantum dalam file powershell.config.json di $PSHOME untuk semua pengguna atau file konfigurasi khusus pengguna untuk pengguna tertentu.
Nota
Fitur eksperimental yang diaktifkan dalam file konfigurasi pengguna lebih diutamakan daripada fitur eksperimental yang tercantum dalam file konfigurasi sistem.
Atribut Eksperimental
Gunakan atribut Experimental untuk mendeklarasikan beberapa kode sebagai eksperimental.
Gunakan sintaks berikut untuk mendeklarasikan atribut Experimental yang menyediakan nama fitur eksperimental dan tindakan yang harus diambil jika fitur eksperimental diaktifkan:
[Experimental(NameOfExperimentalFeature, ExperimentAction)]
Untuk modul, NameOfExperimentalFeature harus mengikuti bentuk <modulename>.<experimentname>. Parameter ExperimentAction harus ditentukan dan satu-satunya nilai yang valid adalah:
-
Showberarti menampilkan fitur eksperimental ini jika fitur diaktifkan -
Hideberarti menyembunyikan fitur eksperimental ini jika fitur diaktifkan
Mendeklarasikan fitur eksperimental dalam modul yang ditulis dalam C#
Penulis modul yang ingin menggunakan bendera Fitur Eksperimental dapat mendeklarasikan cmdlet sebagai eksperimental dengan menggunakan atribut Experimental.
[Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Show)]
[Cmdlet(Verbs.Invoke, "WebRequest")]
public class InvokeWebRequestCommandV2 : WebCmdletBaseV2 { ... }
Mendeklarasikan fitur eksperimental dalam modul yang ditulis di PowerShell
Modul yang ditulis di PowerShell juga dapat menggunakan atribut Experimental untuk mendeklarasikan cmdlet eksperimental:
function Enable-SSHRemoting {
[Experimental("MyRemoting.PSSSHRemoting", "Show")]
[CmdletBinding()]
param()
...
}
Metadata tentang fitur eksperimental disimpan dalam manifes modul. Gunakan properti PrivateData.PSData.ExperimentalFeatures manifes modul untuk mengekspos fitur eksperimental dari modul. Properti ExperimentalFeatures adalah array hashtable yang berisi nama dan deskripsi fitur.
Misalnya:
PrivateData = @{
PSData = @{
ExperimentalFeatures = @(
@{
Name = "PSWebCmdletV2"
Description = "Rewrite the web cmdlets for better performance"
},
@{
Name = "PSRestCmdletV2"
Description = "Rewrite the REST API cmdlets for better performance"
}
)
}
}
Fitur eksperimental yang saling eksklusif
Ada kasus di mana fitur eksperimental tidak dapat berdampingan dengan fitur yang ada atau fitur eksperimental lainnya.
Misalnya, Anda dapat memiliki cmdlet eksperimental yang menggantikan cmdlet yang ada. Dua versi tidak dapat hidup berdampingan. Pengaturan ExperimentAction.Hide hanya memungkinkan salah satu dari dua cmdlet diaktifkan pada satu waktu.
Dalam contoh ini, kami membuat cmdlet Invoke-WebRequest eksperimental baru.
InvokeWebRequestCommand berisi implementasi non-eksperimental.
InvokeWebRequestCommandV2 berisi versi eksperimental dari cmdlet.
Penggunaan ExperimentAction.Hide hanya akan memungkinkan salah satu dari dua fitur diaktifkan pada satu waktu:
[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 { ... }
Ketika fitur eksperimental MyWebCmdlets.PSWebCmdletV2 diaktifkan, implementasi InvokeWebRequestCommand yang ada disembunyikan dan InvokeWebRequestCommandV2 menyediakan implementasi Invoke-WebRequest.
Ini memungkinkan pengguna untuk mencoba cmdlet baru dan memberikan umpan balik lalu kembali ke versi non-eksperimental saat diperlukan.
Parameter eksperimental dalam cmdlet
Atribut Experimental juga dapat diterapkan ke parameter individual. Ini memungkinkan Anda membuat serangkaian parameter eksperimental pada cmdlet yang sudah ada, bukan membuat cmdlet yang sama sekali baru.
Berikut adalah contoh dalam C#:
[Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Show)]
[Parameter(ParameterSet = "NewCompilation")]
public CompilationParameters CompileParameters { ... }
[Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Hide)]
[Parameter()]
public CodeDom CodeDom { ... }
Berikut adalah contoh yang berbeda dalam skrip PowerShell:
param(
[Experimental("MyModule.PSNewFeature", "Show")]
[string] $NewName,
[Experimental("MyModule.PSNewFeature", "Hide")]
[string] $OldName
)
Memeriksa apakah fitur eksperimental diaktifkan
Dalam kode Anda, Anda harus memeriksa apakah fitur eksperimental diaktifkan sebelum mengambil tindakan yang sesuai. Anda dapat menentukan apakah fitur eksperimental diaktifkan menggunakan metode IsEnabled() statis pada kelas System.Management.Automation.ExperimentalFeature.
Berikut adalah contoh dalam C#:
if (ExperimentalFeature.IsEnabled("MyModule.MyExperimentalFeature"))
{
// code specific to the experimental feature
}
Berikut adalah contoh dalam skrip PowerShell:
if ([ExperimentalFeature]::IsEnabled("MyModule.MyExperimentalFeature"))
{
# code specific to the experimental feature
}
Lihat juga
- Nonaktifkan-FiturEksperimental
- Aktifkan-FiturEksperimental
- Get-ExperimentalFeature
- Menggunakan Fitur Eksperimental