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.
Catatan editorial
Penting
Windows PowerShell Language Specification 3.0 diterbitkan pada Desember 2012 dan didasarkan pada Windows PowerShell 3.0. Spesifikasi ini tidak mencerminkan status PowerShell saat ini. Tidak ada rencana untuk memperbarui dokumentasi ini untuk mencerminkan status saat ini. Dokumentasi ini disajikan di sini untuk referensi historis.
Dokumen spesifikasi tersedia sebagai dokumen Microsoft Word dari Pusat Unduhan Microsoft di: https://www.microsoft.com/download/details.aspx?id=36389 Dokumen Word telah dikonversi untuk presentasi di sini di Microsoft Learn. Selama konversi, beberapa perubahan editorial telah dilakukan untuk mengakomodasi pemformatan untuk platform Dokumen. Beberapa kesalahan ketik dan kesalahan kecil telah dikoreksi.
3.1 Penyedia dan Penggerak
Penyedia memungkinkan akses ke data dan komponen yang tidak akan mudah diakses di baris perintah. Data disajikan dalam format konsisten yang menyerupai drive sistem file.
Data yang diekspos penyedia muncul di drive , dan data diakses melalui jalur sama seperti drive disk. Cmdlet bawaan untuk setiap penyedia mengelola data di drive penyedia.
PowerShell menyertakan sekumpulan penyedia bawaan berikut untuk mengakses berbagai jenis penyimpanan data:
| Penyedia | Nama Drive |
Deskripsi | Ref. |
|---|---|---|---|
| Nama Alias | Alias: | Alias PowerShell | §3.1.1 |
| Lingkungan | Env: | Variabel lingkungan | §3.1.2 |
| FileSystem | A:, B:, C:, ... | Disk drive, direktori, dan file | §3.1.3 |
| Fungsi | Fungsi: | Fungsi PowerShell | §3.1.4 |
| Variabel | Variabel: | Variabel PowerShell | §3.1.5 |
Windows PowerShell:
| Penyedia | Nama Drive |
Deskripsi |
|---|---|---|
| Sertifikat | Sertifikat | Sertifikat x509 untuk tanda tangan digital |
| Registri | HKLM: (HKEY_LOCAL_MACHINE), HKCU: (HKEY_CURRENT_USER) | Registri Windows |
| WSMan | WSMan: | informasi konfigurasi WS-Management |
Cmdlet berikut menangani penyedia dan drive:
- Get-PSProvider: Mendapatkan informasi tentang satu atau beberapa penyedia
- Get-PSDrive: Mendapatkan informasi tentang satu atau beberapa drive
Jenis objek yang mewakili penyedia dijelaskan dalam §4.5.1. Jenis objek yang mewakili drive dijelaskan dalam §4.5.2.
3.1.1 Alias
Alias adalah nama alternatif untuk perintah. Perintah dapat memiliki beberapa alias, dan nama asli dan semua aliasnya dapat digunakan secara bergantian. Alias dapat ditetapkan ulang. Alias adalah item (§3.3).
Alias dapat ditetapkan ke alias lain; namun, alias baru bukan alias dari perintah asli.
Alias penyedia adalah ruang nama datar yang hanya berisi objek yang mewakili alias. Variabel tidak memiliki elemen turunan.
PowerShell dilengkapi dengan sekumpulan alias bawaan.
Cmdlet berikut menangani alias:
- New-Alias: Membuat alias
- Set-Alias: Membuat atau mengubah satu atau beberapa alias
- Get-Alias: Mendapatkan informasi tentang satu atau beberapa alias
- Export-Alias: Mengekspor satu atau beberapa alias ke file
Saat alias dibuat untuk perintah menggunakan New-Alias, parameter ke perintah tersebut tidak dapat disertakan dalam alias tersebut. Namun, penugasan langsung ke variabel di Alias: namespace memang mengizinkan parameter untuk disertakan.
Nota
Namun, ini adalah masalah sederhana, untuk membuat fungsi yang tidak lebih dari berisi pemanggilan perintah tersebut dengan semua parameter yang diinginkan, dan untuk menetapkan alias ke fungsi tersebut.
Jenis objek yang mewakili alias dijelaskan dalam §4.5.4.
Objek alias disimpan di drive Alias: (§3,1).
3.1.2 Variabel lingkungan
Penyedia Lingkungan PowerShell memungkinkan variabel lingkungan sistem operasi diambil, ditambahkan, diubah, dihapus, dan dihapus.
Lingkungan penyedia adalah namespace datar yang hanya berisi objek yang mewakili variabel lingkungan. Variabel tidak memiliki elemen turunan.
Nama variabel lingkungan tidak dapat menyertakan tanda sama dengan (=).
Perubahan pada variabel lingkungan hanya memengaruhi sesi saat ini.
Variabel lingkungan adalah item (§3,3).
Jenis objek yang mewakili variabel lingkungan dijelaskan dalam §4.5.6.
Objek variabel lingkungan disimpan di drive Env: (§3,1).
3.1.3 Sistem file
Penyedia PowerShell FileSystem memungkinkan direktori dan file dibuat, dibuka, diubah, dan dihapus.
Penyedia FileSystem adalah namespace hierarkis yang berisi objek yang mewakili sistem file yang mendasar.
File disimpan di drive dengan nama seperti A:, B:, C:, dan sebagainya (§3.1). Direktori dan file diakses menggunakan notasi jalur (§3,4).
Direktori atau file adalah item (§3,3).
3.1.4 Fungsi
Penyedia Fungsi PowerShell memungkinkan fungsi (§8.10) dan filter (§8.10.1) untuk diambil, ditambahkan, diubah, dihapus, dan dihapus.
Fungsi penyedia adalah namespace datar yang hanya berisi fungsi dan objek filter. Tidak ada fungsi maupun filter yang memiliki item turunan.
Perubahan pada fungsi hanya memengaruhi sesi saat ini.
Fungsi adalah item (§3,3).
Jenis objek yang mewakili fungsi dijelaskan dalam §4.5.10. Jenis objek yang mewakili filter dijelaskan dalam §4.5.11.
Objek fungsi disimpan pada Fungsi drive: (§3.1).
3.1.5 Variabel
Variabel dapat didefinisikan dan dimanipulasi langsung dalam bahasa PowerShell.
Variabel penyedia adalah namespace datar yang hanya berisi objek yang mewakili variabel. Variabel tidak memiliki elemen turunan.
Cmdlet berikut juga berurusan dengan variabel:
- New-Variable: Membuat variabel
- Set-Variable: Membuat atau mengubah karakteristik satu atau beberapa variabel
- Get-Variable: Mendapatkan informasi tentang satu atau beberapa variabel
- Clear-Variable: Menghapus nilai satu atau beberapa variabel
- Hapus Variabel : Menghapus satu atau beberapa variabel
Karena variabel adalah item (§3,3), dapat dimanipulasi oleh sebagian besar cmdlet terkait Item.
Jenis objek yang mewakili variabel dijelaskan dalam §4.5.3.
Objek variabel disimpan pada Variabel drive: (§3,1).
3.2 Lokasi kerja
Lokasi kerja saat ini adalah lokasi default yang menjadi acuan perintah. Ini adalah lokasi yang digunakan jika jalur eksplisit (§3,4) tidak disediakan saat perintah dipanggil. Lokasi ini mencakup drive saat ini.
Host PowerShell mungkin memiliki beberapa drive, dalam hal ini, setiap drive memiliki lokasinya sendiri saat ini.
Ketika nama drive ditentukan tanpa direktori, lokasi saat ini untuk drive tersebut tersirat.
Lokasi kerja saat ini dapat disimpan pada tumpukan, lalu diatur ke lokasi baru. Nantinya, lokasi yang disimpan dapat dipulihkan dari stack tersebut dan ditetapkan sebagai lokasi kerja saat ini. Ada dua jenis tumpukan lokasi: tumpukan lokasi kerja default , dan nol atau lebih tumpukan lokasi kerja bernama yang ditentukan pengguna . Ketika sesi dimulai, tumpukan lokasi kerja default juga merupakan tumpukan lokasi kerja saat ini. Namun, tumpukan lokasi kerja bernama apa pun dapat dijadikan sebagai tumpukan lokasi kerja saat ini.
Cmdlet berikut menangani lokasi:
- Set-Location: Menetapkan lokasi kerja saat ini
- Get-Location: Menentukan lokasi kerja untuk drive yang ditentukan, atau lokasi kerja untuk stack yang ditentukan
- Push-Location: Menyimpan lokasi kerja saat ini di bagian atas tumpukan lokasi tertentu
- Pop-Location: Memulihkan lokasi kerja saat ini dari bagian atas tumpukan lokasi yang ditentukan
Jenis objek yang mewakili lokasi kerja dan tumpukan lokasi kerja dijelaskan dalam §4.5.5.
3.3 Item
Item adalah alias (§3,1,1), variabel (§3,1,5), fungsi (§3.1.4), variabel lingkungan (§3.1.2), atau file atau direktori dalam sistem file (§3.1.3).
Cmdlet berikut menangani item:
- Item Baru : Membuat item baru
- Set-Item: Mengubah nilai satu atau beberapa item
- Get-Item: Mengambil item di lokasi yang ditentukan
- Get-ChildItem: Mendapatkan item dan item turunan di lokasi yang ditentukan
- Copy-Item : Menyalin satu atau beberapa item dari satu lokasi ke lokasi lainnya
- Move-Item : Memindahkan satu atau beberapa item dari satu lokasi ke lokasi lain
- Ganti Nama Item: Mengganti nama item
- Invoke-Item: Melakukan tindakan default pada satu atau beberapa item
- Clear-Item: Menghapus konten satu atau beberapa item, tetapi tidak menghapus item (lihat
- Hapus Item : Menghapus item yang ditentukan
Cmdlet berikut menangani konten item:
- Get-Content: Mendapatkan konten item
- Add-Content: Menambahkan konten ke item yang ditentukan
- Set-Content: Menulis atau mengganti isi dalam item
- Clear-Content: Menghapus konten item
Jenis objek yang mewakili direktori dijelaskan dalam §4.5.17. Jenis objek yang mewakili file dijelaskan dalam §4.5.18.
3.4 Nama jalur
Semua item di penyimpanan data yang dapat diakses melalui penyedia PowerShell dapat diidentifikasi secara unik dengan nama jalurnya. Nama jalur adalah kombinasi dari nama item, kontainer dan subkontainer tempat item berada, dan drive PowerShell tempat kontainer diakses.
Nama jalur dibagi menjadi salah satu dari dua jenis: sepenuhnya memenuhi syarat dan relatif. Nama jalur dengan kualifikasi penuh terdiri dari semua elemen yang menyusun jalur. Sintaks berikut menunjukkan elemen dalam nama jalur yang sepenuhnya memenuhi syarat:
Saran
Notasi ~opt~ dalam definisi sintaks menunjukkan bahwa entitas leksikal bersifat opsional dalam sintaks.
path:
provider~opt~ drive~opt~ containers~opt~ item
provider:
module~opt~ provider ::
module:
module-name \
drive:
drive-name :
containers:
container \
containers container \
modul merujuk pada modul induk.
penyedia mengacu pada penyedia PowerShell melalui mana penyimpanan data diakses.
drive mengacu pada drive PowerShell yang didukung oleh penyedia PowerShell tertentu.
Kontainer dapat berisi kontainer lain, yang dapat berisi kontainer lain, dan sebagainya, dengan kontainer akhir yang menyimpan item . Kontainer harus ditentukan dalam urutan hierarkis tempat kontainer berada di penyimpanan data.
Berikut adalah contoh nama jalur:
E:\Accounting\InvoiceSystem\Production\MasterAccount\MasterFile.dat
Jika elemen akhir dalam jalur berisi elemen lain, elemen tersebut adalah elemen kontainer ; jika tidak, ini adalah elemen daun .
Dalam beberapa kasus, nama jalur yang sepenuhnya memenuhi syarat tidak diperlukan; nama jalur relatif sudah cukup. Nama jalur relatif didasarkan pada lokasi kerja saat ini. PowerShell memungkinkan item diidentifikasi berdasarkan lokasinya relatif terhadap lokasi kerja saat ini. Nama jalur relatif melibatkan penggunaan beberapa karakter khusus. Tabel berikut menjelaskan masing-masing karakter ini dan menyediakan contoh nama jalur relatif dan nama jalur yang sepenuhnya memenuhi syarat. Contoh dalam tabel didasarkan pada direktori kerja saat ini yang diatur ke C:\Windows:
| Simbol | Deskripsi | jalur relatif | jalur berkwalifikasi penuh |
|---|---|---|---|
. |
Lokasi kerja saat ini | .\System |
C:\Windows\System |
.. |
Atasan lokasi kerja saat ini | ..\Program Files |
C:\Program Files |
\ |
Drive root dari lokasi kerja saat ini | \Program Files |
C:\Program Files |
| tidak | Tidak ada karakter khusus | System |
C:\Windows\System |
Untuk menggunakan nama jalur dalam perintah, masukkan nama tersebut sebagai nama jalur yang sepenuhnya memenuhi syarat atau relatif.
Cmdlet berikut menangani jalur:
- Convert-Path: Mengonversi jalur dari jalur PowerShell ke jalur penyedia PowerShell
- Jalur Gabungan : Menggabungkan jalur dan jalur anak ke dalam satu jalur
- Resolve-Path : Menyelesaikan karakter wildcard dalam sebuah jalur
- Split-Path: Mengembalikan bagian yang ditentukan dari jalur
- Test-Path: Menentukan apakah elemen jalur ada atau apakah jalur terbentuk dengan baik
Beberapa cmdlet (seperti Add-Content
Jenis objek yang mewakili jalur yang diselesaikan dijelaskan dalam §4.5.5. Jalur sering dimanipulasi sebagai string.
3.5 Cakupan
3.5.1 Pengantar
Nama dapat menunjukkan variabel, fungsi, alias, variabel lingkungan, atau drive. Nama yang sama dapat menunjukkan item yang berbeda di tempat yang berbeda dalam skrip. Untuk setiap item berbeda yang dilambangkan nama, nama tersebut hanya terlihat dalam cakupan wilayah teks skrip yang disebut . Item berbeda yang ditandai dengan nama yang sama memiliki cakupan yang berbeda, atau berada di ruang nama yang berbeda.
Cakupan dapat bersarang, dalam hal ini, cakupan luar disebut sebagai cakupan induk , dan cakupan bersarang apa pun adalah cakupan anak dari induk tersebut. Cakupan nama adalah cakupan di mana nama tersebut ditentukan dan semua cakupan anak, kecuali dijadikan pribadi. Dalam cakupan anak, nama yang ditentukan di sana menyembunyikan setiap item yang ditentukan dengan nama yang sama dalam cakupan induk.
Kecuali notasi sumber titik (§3.5.5) digunakan, masing-masing berikut membuat cakupan baru:
- Berkas skrip
- Blok skrip
- Fungsi atau filter
Pertimbangkan contoh berikut:
# Start of script
$x = 2; $y = 3
Get-Power $x $y
# Function defined in script
function Get-Power([int]$x, [int]$y) {
if ($y -gt 0) {
return $x * (Get-Power $x (--$y))
} else {
return 1
}
}
# End of script
Cakupan variabel $x dan $y yang dibuat dalam skrip adalah isi skrip tersebut, termasuk fungsi yang ditentukan di dalamnya. Fungsi Get-Power mendefinisikan dua parameter dengan nama yang sama.
Karena setiap fungsi memiliki cakupannya sendiri, variabel ini berbeda dari yang ditentukan dalam cakupan induk, dan mereka menyembunyikannya dari cakupan induk. Cakupan fungsi berada di dalam cakupan skrip.
Perhatikan bahwa fungsi memanggil dirinya secara rekursif. Setiap kali melakukannya, ia membuat cakupan berlapis lainnya, masing-masing dengan variabelnya sendiri $x dan $y.
Berikut adalah contoh yang lebih kompleks, yang juga menunjukkan cakupan berlapis dan penggunaan kembali nama:
# start of script scope
$x = 2 # top-level script-scope $x created
# $x is 2
F1 # create nested scope with call to function F1
# $x is 2
F3 # create nested scope with call to function F3
# $x is 2
function F1 { # start of function scope
# $x is 2
$x = $true # function-scope $x created
# $x is $true
& { # create nested scope with script block
# $x is $true
$x = 12.345 # scriptblock-scope $x created
# $x is 12.345
} # end of scriptblock scope, local $x goes away
# $x is $true
F2 # create nested scope with call to function F2
# $x is $true
} # end of function scope, local $x goes away
function F2 { # start of function scope
# $x is $true
$x = "red" # function-scope $x created
# $x is "red"
} # end of function scope, local $x goes away
function F3 { # start of function scope
# $x is 2
if ($x -gt 0) {
# $x is 2
$x = "green"
# $x is "green"
} # end of block, but not end of any scope
# $x is still "green"
} # end of function scope, local $x goes away
# end of script scope
3.5.2 Nama dan angka cakupan
PowerShell mendukung cakupan berikut:
Global: Ini adalah cakupan tingkat teratas. Semua variabel otomatis dan preferensi didefinisikan dalam cakupan ini. Cakupan global adalah cakupan induk dari semua cakupan lainnya, dan semua cakupan lainnya adalah cakupan anak dari cakupan global.
Lokal: Ini adalah cakupan saat ini di titik eksekusi apa pun dalam skrip, blok skrip, atau fungsi. Cakupan apa pun dapat menjadi cakupan lokal.
Skrip: Cakupan ini ada untuk setiap file skrip yang dijalankan. Cakupan skrip adalah cakupan induk dari semua cakupan yang dibuat dari dalamnya. Blok skrip tidak tidak memiliki cakupan skrip sendiri; sebaliknya, cakupan skripnya adalah dari file skrip leluhur terdekatnya. Meskipun tidak ada yang namanya cakupan modul, cakupan skrip menyediakan yang setara.
Nama dapat dinyatakan pribadi, dalam hal ini, nama tersebut tidak terlihat di luar cakupan induknya, bahkan tidak ke cakupan anak. Konsep privat bukanlah entitas cakupan yang terpisah; ini adalah alias untuk cakupan lokal dengan tambahan fungsi menyembunyikan nama jika digunakan sebagai lokasi yang dapat ditulis.
Cakupan dapat dirujuk oleh angka, yang menjelaskan posisi relatif satu cakupan ke cakupan lainnya. Cakupan 0 menunjukkan cakupan lokal, cakupan 1 menunjukkan cakupan leluhur 1 generasi, cakupan 2 menunjukkan cakupan leluhur generasi 2, dan sebagainya. (Nomor cakupan digunakan oleh cmdlet yang memanipulasi variabel.)
3.5.3 Cakupan nama variabel
Seperti yang ditunjukkan oleh produksi berikut, nama variabel dapat ditentukan dengan salah satu dari enam cakupan yang berbeda:
variable-scope:
Global:
Local:
Private:
Script:
Using:
Workflow:
variable-namespace
Cakupan bersifat opsional. Tabel berikut ini memperlihatkan arti masing-masing dalam semua konteks yang mungkin. Ini juga menunjukkan cakupan ketika tidak ada cakupan yang ditentukan secara eksplisit:
| Pengubah Cakupan | Dalam File Skrip | Dalam sebuah Blok Skrip | Di Dalam Sebuah Fungsi |
|---|---|---|---|
| Mendunia | Cakupan global | Cakupan global | Cakupan global |
| Skrip | Cakupan file skrip leluhur terdekat atau Global jika tidak ada file skrip leluhur terdekat | Cakupan file skrip leluhur terdekat atau Global jika tidak ada file skrip leluhur terdekat | Cakupan file skrip leluhur terdekat atau Global jika tidak ada file skrip leluhur terdekat |
| Privat | Cakupan Global/Skrip/Lokal | Cakupan lokal | Cakupan lokal |
| Lokal | Cakupan Global/Skrip/Lokal | Cakupan lokal | Cakupan lokal |
| Using | Implementasi yang ditentukan | Implementasi yang ditentukan | Implementasi yang ditentukan |
| Alur kerja | Implementasi yang ditentukan | Implementasi yang ditentukan | Implementasi yang ditentukan |
| Tidak ada | Cakupan Global/Skrip/Lokal | Cakupan lokal | Cakupan lokal |
Informasi cakupan variabel juga dapat ditentukan saat menggunakan keluarga cmdlet yang tercantum dalam (§3.1.5). Secara khusus, lihat parameter Scope, dan parameter Option Private dan Option AllScope untuk informasi selengkapnya.
Pengubah Using: cakupan digunakan untuk mengakses variabel yang ditentukan dalam cakupan lain saat menjalankan skrip melalui cmdlet seperti Start-Job, , Invoke-Commandatau dalam pernyataan inlinescript. Misalnya:
$a = 42
Invoke-Command --ComputerName RemoteServer { $Using:a } # returns 42
workflow foo
{
$b = "Hello"
inlinescript { $Using:b }
}
foo # returns "Hello"
Alur kerja cakupan digunakan dengan pernyataan paralel atau pernyataan urutan untuk mengakses variabel yang ditentukan dalam alur kerja.
3.5.4 Cakupan nama fungsi
Nama fungsi mungkin juga memiliki salah satu dari empat cakupan yang berbeda, dan visibilitas nama tersebut sama dengan untuk variabel (§3,5,3).
3.5.5 Notasi sumber titik
Saat file skrip, blok skrip, atau fungsi dijalankan dari dalam file skrip, blok skrip, atau fungsi lain, file skrip yang dijalankan membuat cakupan berlapis baru. Misalnya
Script1.ps1
& "Script1.ps1"
& { ... }
FunctionA
Namun, ketika notasi sumber titik digunakan, tidak ada cakupan baru yang dibuat sebelum perintah dijalankan, jadi penambahan/perubahan yang akan dilakukannya pada cakupan lokalnya sendiri dibuat ke cakupan saat ini sebagai gantinya. Misalnya
. Script2.ps1
. "Script2.ps1"
. { ... }
. FunctionA
3.5.6 Modul
Sama seperti file skrip tingkat atas berada di akar pohon cakupan berlapis hierarkis, demikian juga setiap modul (§3,14). Namun, secara default, hanya nama-nama yang diekspor oleh modul yang dapat dikenali berdasarkan nama dari dalam konteks pengimporan. Parameter 'Global' dari cmdlet Import-Module memungkinkan peningkatan visibilitas untuk nama-nama yang diekspor.
3.6 Properti ReadOnly dan Konstanta
Variabel dan alias dijelaskan oleh objek yang berisi sejumlah properti. Properti ini ditetapkan dan dimanipulasi oleh dua keluarga cmdlet (§3.1.5, §3.1.1). Salah satu properti tersebut adalah Opsi, yang dapat diatur ke ReadOnly atau Konstanta (menggunakan parameter Opsi). Variabel atau alias yang ditandai ReadOnly dapat dihapus, dan propertinya dapat diubah asalkan parameter Force ditentukan. Namun, variabel atau alias yang ditandai Konstanta tidak dapat dihapus atau propertinya berubah.
3.7 Metode kelebihan beban dan resolusi panggilan
3.7.1 Pengantar
Seperti yang dinyatakan dalam §1, prosedur eksternal yang disediakan oleh lingkungan eksekusi (dan ditulis dalam beberapa bahasa selain PowerShell) disebut metode .
Nama metode bersama dengan jumlah dan jenis parameternya secara kolektif disebut tanda tangan metode tersebut. (Perhatikan bahwa tanda tangan tidak menyertakan jenis pengembalian metode.) Lingkungan eksekusi dapat memungkinkan jenis untuk memiliki beberapa metode dengan nama yang sama asalkan masing-masing memiliki tanda tangan yang berbeda. Ketika beberapa versi dari beberapa metode didefinisikan, metode itu dikatakan kelebihan beban. Misalnya, jenis Matematika (§4.3.8) berisi sekumpulan metode yang disebut Abs, yang menghitung nilai absolut dari angka yang ditentukan, di mana angka yang ditentukan dapat memiliki salah satu dari sejumlah jenis. Metode dalam set tersebut memiliki tanda tangan berikut:
Abs(decimal)
Abs(float)
Abs(double)
Abs(int)
Abs(long)
Abs(SByte)
Abs(Int16)
Dalam hal ini, semua metode memiliki jumlah argumen yang sama; tanda tangan mereka hanya berbeda menurut jenis argumen.
Contoh lain melibatkan jenis Array (§4.3.2), yang berisi sekumpulan metode yang disebut Salin yang menyalin rentang elemen dari satu array ke array lainnya, dimulai dari awal setiap array (secara default) atau pada beberapa elemen yang ditunjuk. Metode dalam set tersebut memiliki tanda tangan berikut:
Copy(Array, Array, int)
Copy(Array, Array, long)
Copy(Array, int, Array, int, int)
Copy(Array, long, Array, long, long)
Dalam hal ini, tanda tangan berbeda menurut jenis argumen dan, dalam beberapa kasus, berdasarkan nomor argumen juga.
Dalam sebagian besar panggilan ke metode yang kelebihan beban, jumlah dan jenis argumen yang diteruskan sama persis dengan salah satu kelebihan beban, dan metode yang dipilih jelas. Namun, jika tidak demikian, perlu ada cara untuk menyelesaikan versi kelebihan beban mana yang akan dipanggil, jika ada. Misalnya
[Math]::Abs([byte]10) # no overload takes type byte
[array]::Copy($source, 3, $dest, 5L, 4) # both int and long indexes
Contoh lain termasuk jenis string (yaitu; System.String), yang memiliki banyak metode yang kelebihan beban.
Meskipun PowerShell memiliki aturan untuk menyelesaikan panggilan metode yang tidak cocok dengan tanda tangan yang kelebihan beban persis, PowerShell tidak menyediakan cara untuk menentukan metode yang kelebihan beban.
Nota
Catatan Editor: PowerShell 5.0 menambahkan kemampuan untuk menentukan kelas berbasis skrip. Kelas-kelas ini dapat berisi metode yang kelebihan beban.
Resolusi kelebihan beban metode 3.7.2
Mengingat panggilan metode (§7.1.3) memiliki daftar ekspresi argumen, dan serangkaian metode kandidat s (yaitu, metode yang dapat dipanggil), mekanisme untuk memilih metode terbaik disebut resolusi kelebihan beban.
Mengingat set metode kandidat yang berlaku (§3,7,3), metode terbaik dalam set tersebut dipilih. Jika set hanya berisi satu metode, maka metode tersebut adalah metode terbaik. Jika tidak, metode terbaik adalah salah satu metode yang lebih baik daripada semua metode lain sehubungan dengan daftar argumen yang diberikan menggunakan aturan yang ditunjukkan dalam §3.7.4. Jika tidak ada tepat satu metode yang lebih baik daripada semua metode lain, maka pemanggilan metode mengakibatkan ambiguitas dan dilaporkannya kesalahan.
Metode terbaik harus dapat diakses dalam konteks di mana metode tersebut dipanggil. Misalnya, skrip PowerShell tidak dapat memanggil metode yang bersifat privat atau dilindungi.
Metode terbaik untuk panggilan ke metode statis harus merupakan metode statis, dan metode terbaik untuk panggilan ke metode instans harus merupakan metode instans.
3.7.3 Metode yang berlaku
Metode dikatakan berlaku sehubungan dengan daftar argumen A ketika salah satu hal berikut ini benar:
- Jumlah argumen dalam A identik dengan jumlah parameter yang diterima metode.
- Metode ini memiliki parameter yang diperlukan M dan parameter opsional N, dan jumlah argumen di A lebih besar dari atau sama dengan M, tetapi kurang dari N.
- Metode menerima jumlah variabel argumen dan jumlah argumen dalam A lebih besar dari jumlah parameter yang diterima metode.
Selain memiliki jumlah argumen yang sesuai, setiap argumen di A harus cocok dengan mode parameter yang melewati argumen, dan jenis argumen harus cocok dengan jenis parameter, atau harus ada konversi dari jenis argumen ke jenis parameter.
Jika jenis argumen adalah ref (§4.3.6), parameter yang sesuai juga harus ref, dan jenis argumen untuk tujuan konversi adalah jenis nilai properti dari argumen ref.
Jika jenis argumen ref, parameter yang sesuai bisa out alih-alih ref.
Jika metode menerima jumlah variabel argumen, metode dapat berlaku dalam bentuk normal atau formulir diperluas. Jika jumlah argumen dalam A identik dengan jumlah parameter yang diterima metode dan parameter terakhir adalah array, maka formulir tergantung pada peringkat salah satu dari dua kemungkinan konversi:
- Peringkat konversi dari tipe argumen terakhir dalam A ke tipe array untuk parameter terakhir.
- Peringkat konversi dari tipe argumen terakhir di A ke tipe elemen dari tipe array untuk parameter terakhir.
Jika konversi pertama (ke jenis array) lebih baik daripada konversi kedua (ke jenis elemen array), maka metode ini berlaku dalam bentuk normal, jika tidak, metode tersebut berlaku dalam bentuk yang diperluas.
Jika ada lebih banyak argumen daripada parameter, metode mungkin hanya berlaku dalam bentuk yang diperluas. Agar dapat diterapkan dalam formulir yang diperluas, parameter terakhir harus memiliki jenis array. Metode ini diganti dengan metode yang setara yang memiliki parameter terakhir diganti dengan sejumlah parameter yang cukup untuk menutupi setiap argumen yang tidak cocok di A. Setiap tipe parameter tambahan adalah tipe elemen dari tipe array untuk parameter terakhir dalam metode asli. Aturan di atas untuk metode yang berlaku diterapkan ke metode baru dan daftar argumen A ini.
3.7.4 Metode yang lebih baik
Mengingat daftar argumen A dengan sekumpulan ekspresi argumen { E~1~, E~2~, ..., E~N~ } dan dua metode aplikasi M~P~ dan M~Q~ dengan jenis parameter { P~1~, P~2~, ..., P~N~ } dan { Q~1~, Q~2~, ..., Q~N~ }, M~P~ didefinisikan menjadi metode yang lebih baik daripada M~Q~ jika peringkat kumulatif konversi untuk M~P~ lebih baik daripada itu untuk M~Q~.
Peringkat kumulatif konversi dihitung sebagai berikut. Setiap konversi bernilai nilai yang berbeda tergantung pada jumlah parameter, dengan konversi E~1~ senilai N, E~2~ senilai N-1, hingga E~N~ senilai 1. Jika konversi dari E~X~ ke P~X~ lebih baik daripada itu dari E~X~ ke Q~X~, M~P~ mengumpulkan N-X+1; jika tidak, M~Q~ mengakumulasi N-X+1. Jika M~P~ dan M~Q~ memiliki nilai yang sama, maka aturan pemecah seri berikut ini digunakan, diterapkan secara berurutan:
- Peringkat kumulatif konversi antara jenis parameter (mengabaikan jenis argumen) dihitung dengan cara yang mirip dengan peringkat sebelumnya, jadi
P~1~dibandingkan denganQ~1~,P~2~terhadapQ~2~, ..., danP~N~terhadapQ~N~. Perbandingan dilewati jika argumen$null, atau jika jenis parameter bukan jenis numerik. Perbandingan juga dilewati jika konversi argumenE~X~kehilangan informasi saat dikonversi keP~X~tetapi tidak kehilangan informasi saat dikonversi keQ~X~, atau sebaliknya. Jika jenis konversi parameter dibandingkan, maka jika konversi dariP~X~keQ~X~lebih baik daripada yang dariQ~X~keP~X~,M~P~mengumpulkan N-X+1; jika tidak,M~Q~mengakumulasi N-X+1. Aturan pemecahan ikatan ini dimaksudkan untuk lebih memilih metode yang paling spesifik (yaitu, metode dengan parameter yang memiliki jenis data terkecil) jika tidak ada informasi yang hilang dalam konversi, atau lebih memilih metode yang paling umum (yaitu, metode dengan parameter dengan jenis data terbesar) jika konversi mengakibatkan hilangnya informasi. - Jika kedua metode menggunakan formulir yang diperluas, metode dengan lebih banyak parameter adalah metode yang lebih baik.
- Jika satu metode menggunakan formulir yang diperluas dan yang lain menggunakan bentuk normal, metode menggunakan bentuk normal adalah metode yang lebih baik.
3.7.5 Konversi yang lebih baik
Teks di bawah ini ditandai seperti ini khusus untuk Windows PowerShell.
Konversi diberi peringkat dengan cara berikut, dari terendah hingga tertinggi:
-
T~1~[]keT~2~[]di mana tidak ada konversi yang dapat ditugaskan antaraT~1~danT~2~ - T ke string di mana T adalah jenis apa pun
-
T~1~keT~2~di manaT~1~atauT~2~menentukan konversi kustom dengan cara yang ditentukan implementasi -
T~1~keT~2~di manaT~1~mengimplementasikan IConvertible -
T~1~T~2~di manaT~1~atauT~2~menerapkan metodeT~2~ op_Implicit(T1) -
T~1~T~2~di manaT~1~atauT~2~menerapkan metodeT~2~ op_Explicit(T1) -
T~1~keT~2~di manaT~2~mengimplementasikan konstruktor yang mengambil satu argumen jenisT~1~ - Salah satu konversi berikut:
- string ke
Tdi manaTmenerapkan metode statisT Parse(string)atauT Parse(string, IFormatProvider) -
T~1~keT~2~di manaT~2~adalah enum apa pun danT~1~adalah string atau kumpulan objek yang dapat dikonversi menjadi string
- string ke
-
Tmenjadi PSObject di manaTadalah tipe apa pun - Salah satu konversi berikut:
Language- T diubah menjadi bool di mana
Tadalah jenis numerik apa pun - string ke
Tdi manaTadalahregex,wmisearcher,wmi,wmiclass,adsi,adsisearcher, atautype -
Tkebool - T~1~ ke
Nullable[T~2~]di mana konversi dariT~1~keT~2~ada -
Tuntuk membatalkan -
T~1~[]keT~2~[]di mana konversi yang dapat ditetapkan antaraT~1~danT~2~ada -
T~1~keT~2~[]di manaT~1~adalah koleksi -
IDictionarykeHashtable -
Tkeref -
Tkexml -
scriptblockkedelegate -
T~1~keT~2~di manaT~1~adalah jenis bilangan bulat danT~2~adalah enum
- T diubah menjadi bool di mana
-
$nullkeTdi manaTadalah jenis nilai apa pun -
$nullkeTdi manaTadalah jenis referensi apa pun - Salah satu konversi berikut:
byte ke
Tdi manaTadalahSByteUInt16keTdi manaTSByte,byte, atauInt16Int16keTdi manaTadalahSByteataubyteUInt32keTdi manaTSByte,byte,Int16,UInt16, atauintintkeTdi manaTSByte,byte,Int16, atauUInt16UInt64keTdi manaTSByte,byte,Int16,UInt16,int,UInt32, ataulonglongkeTdi manaTSByte,byte,Int16,UInt16,int, atauUInt32floatkeTdi manaTadalah jenis bilangan bulat ataudecimaldoublekeTdi manaTadalah jenis bilangan bulat ataudecimaldecimalkeTdi manaTadalah jenis bilangan bulat apa pun
- Salah satu konversi berikut:
-
SBytekeTdi manaTbyte,uint6,UInt32, atauUInt64 -
Int16keTdi manaTUInt16,UInt32, atauUInt64 -
intkeTdi manaTadalahUInt32atauUInt64 -
longkeUInt64 -
decimalkeTdi manaTadalahfloatataudouble
-
- Salah satu konversi berikut:
-
Tkestringdi manaTadalah jenis numerik apa pun -
Tkechardi manaTadalah jenis numerik apa pun -
stringkeTdi manaTadalah jenis numerik apa pun
-
- Salah satu konversi berikut, konversi ini dianggap sebagai konversi yang dapat ditetapkan:
-
bytekeTtempatTadalahInt16,UInt16,int,UInt32,long,UInt64,single,double, ataudecimal -
SBytekeTtempatTadalahInt16,UInt16,int,UInt32,long,UInt64,single,double, ataudecimal -
UInt16keTdi manaTint,UInt32,long, atauUInt64,single,double, ataudecimal -
Int16keTdi manaTint,UInt32,long, atauUInt64,single,double, ataudecimal -
UInt32keTdi manaTlong, atauUInt64,single,double, ataudecimal -
intkeTdi manaTlong,UInt64,single,double, ataudecimal -
singlekedouble
-
-
T~1~T~2~di manaT~2~adalah kelas dasar atau antarmukaT~1~. Konversi ini dianggap sebagai konversi yang dapat ditetapkan. -
stringkechar[] -
TkeT-- Konversi ini dianggap sebagai konversi yang dapat ditetapkan.
Untuk setiap konversi formulir T~1~ ke T~2~[] di mana T~1~ bukan array dan tidak ada konversi lain yang berlaku, jika ada konversi dari T~1~ ke T~2~, peringkat konversi lebih buruk daripada konversi dari T~1~ ke T~2~, tetapi lebih baik daripada konversi apa pun yang diberi peringkat kurang dari konversi dari T~1~ ke T~2~
3.8 Pencarian nama
Dimungkinkan untuk memiliki berbagai perintah yang semua memiliki nama yang sama. Urutan pencarian nama dilakukan dalam kasus seperti itu adalah alias, fungsi, cmdlet, dan perintah eksternal.
3.9 Pencarian Nama Jenis
int, double, long[], dan Hashtable.
Nama jenis dicocokkan sebagai berikut: Bandingkan nama jenis tertentu dengan daftar akselerator jenis bawaan, seperti int, long, double. Jika kecocokan ditemukan, itulah jenisnya. Jika tidak, anggaplah nama jenis sepenuhnya memenuhi syarat dan lihat apakah jenis tersebut ada pada sistem host. Jika kecocokan ditemukan, itulah jenisnya. Jika tidak, tambahkan awalan namespace System.. Jika kecocokan ditemukan, itulah jenisnya. Jika tidak, nama jenis salah. Algoritma ini diterapkan untuk setiap argumen tipe untuk tipe generik. Namun, tidak perlu menentukan aritas (jumlah argumen atau operand yang diambil oleh fungsi atau operator).
3.10 Manajemen memori otomatis
Berbagai operator dan cmdlet menghasilkan alokasi memori untuk objek jenis referensi, seperti string dan array. Alokasi dan pengosongan memori ini dikelola oleh sistem runtime PowerShell. Artinya, PowerShell menyediakan pengumpulan sampah otomatis.
3.11 Urutan eksekusi
Efek samping adalah perubahan status lingkungan eksekusi perintah. Perubahan pada nilai variabel (melalui operator penugasan atau operator pra-dan pasca-kenaikan dan penurunan) adalah efek samping, seperti halnya perubahan pada konten file.
Kecuali ditentukan sebaliknya, pernyataan dijalankan dalam urutan leksikal.
Kecuali sebagaimana ditentukan untuk beberapa operator, urutan evaluasi istilah dalam ekspresi dan urutan di mana efek samping terjadi keduanya tidak ditentukan.
Ekspresi yang memanggil perintah melibatkan ekspresi yang menunjuk perintah, dan nol atau lebih ekspresi yang menunjuk argumen yang nilainya akan diteruskan ke perintah tersebut. Urutan di mana ekspresi ini dievaluasi relatif terhadap satu sama lain tidak ditentukan.
3.12 Penanganan kesalahan
Ketika perintah gagal, ini dianggap sebagai kesalahan , dan informasi tentang kesalahan tersebut dicatat dalam catatan kesalahan , yang jenisnya tidak ditentukan (§4.5.15); namun, jenis ini mendukung subskrip.
Kesalahan termasuk dalam salah satu dari dua kategori. Entah itu berakhir dengan operasi (kesalahan yang mengakhiri) atau tidak (kesalahan yang tidak mengakhiri). Dalam kasus kesalahan yang menyebabkan penghentian, kesalahan tersebut dicatat dan operasi dihentikan. Dalam kasus kesalahan non-terminasi, kesalahan tersebut dicatat dan operasi tetap berlanjut.
Kesalahan yang tidak mengakhiri ditulis ke aliran kesalahan. Meskipun informasi tersebut dapat dialihkan ke file, objek kesalahan pertama kali dikonversi ke string dan informasi penting dalam objek tersebut tidak akan ditangkap membuat diagnosis sulit jika bukan tidak mungkin. Sebagai gantinya, teks kesalahan dapat dialihkan (§7,12) dan objek kesalahan yang disimpan dalam variabel, seperti dalam $Error1 = command 2>&1.
Variabel otomatis $Error berisi kumpulan rekaman kesalahan yang mewakili kesalahan terbaru, dan kesalahan terbaru ada di $Error[0]. Koleksi ini dipertahankan dalam buffer sehingga rekaman lama dibuang saat yang baru ditambahkan. Variabel otomatis $MaximumErrorCount mengontrol jumlah rekaman yang dapat disimpan.
$Error berisi semua kesalahan dari berbagai perintah yang dikumpulkan dalam satu koleksi. Untuk mengumpulkan kesalahan dari perintah tertentu, gunakan parameter umum ErrorVariable, yang memungkinkan variabel yang ditentukan oleh pengguna untuk menampung kumpulan tersebut.
3.13 Alur
Alur adalah serangkaian dari satu atau beberapa perintah yang masing-masing dipisahkan oleh operator pipa | (U+007C).
Setiap perintah menerima input dari pendahulunya dan menulis output ke penerusnya. Kecuali output di akhir alur dibuang atau dialihkan ke file, output dikirim ke lingkungan host, yang dapat memilih untuk menulisnya ke output standar. Perintah dalam alur juga dapat menerima input dari argumen. Misalnya, pertimbangkan penggunaan perintah berikut Get-ChildItem, Sort-Object, dan Process-File, yang membuat daftar nama file dalam direktori sistem file tertentu, mengurutkan sekumpulan rekaman teks, dan melakukan pemrosesan pada catatan teks, masing-masing:
Get-ChildItem
Get-ChildItem E:*.txt | Sort-Object -CaseSensitive | Process-File >results.txt
Dalam kasus pertama, Get-ChildItem membuat kumpulan nama file di direktori saat ini/default. Koleksi tersebut dikirim ke lingkungan host, yang, secara default, menulis nilai setiap elemen ke output standar.
Dalam kasus kedua, Get-ChildItem membuat kumpulan nama file dalam direktori yang ditentukan, menggunakan argumen E:*.txt. Koleksi tersebut ditulis ke perintah Sort-Object, yang, secara default, mengurutkannya dalam urutan naik, sensitif terhadap huruf besar/kecil (berdasarkan argumen CaseSensitive). Koleksi yang dihasilkan kemudian ditulis ke perintah Process-File, yang melakukan beberapa pemrosesan (tidak diketahui). Output dari perintah tersebut kemudian dialihkan ke file results.txt.
Jika sebuah perintah menulis satu objek, penerusnya menerima objek tersebut dan kemudian mengakhiri tugasnya setelah menulis objeknya sendiri kepada penerusnya. Namun, jika perintah menulis beberapa objek, perintah dikirimkan satu per satu ke perintah penerus, yang dijalankan sekali per objek. Perilaku ini disebut streaming. Dalam pemrosesan aliran, objek ditulis di sepanjang jalur pemrosesan segera setelah tersedia, bukan ketika seluruh kumpulan telah diproduksi.
Saat memproses koleksi, perintah dapat ditulis sewaktu-waktu sehingga dapat melakukan pemrosesan khusus sebelum elemen awal dan setelah elemen akhir.
3.14 Modul
Modul adalah unit yang dapat digunakan kembali mandiri yang memungkinkan kode PowerShell dipartisi, diatur, dan diabstraksi. Modul dapat berisi perintah (seperti cmdlet dan fungsi) dan item (seperti variabel dan alias) yang dapat digunakan sebagai satu unit.
Setelah modul dibuat, modul tersebut harus diimpor ke dalam sesi agar perintah dan item di dalamnya dapat digunakan. Setelah diimpor, perintah dan item bertingkah seolah-olah didefinisikan secara lokal. Modul diimpor secara eksplisit dengan perintah Import-Module. Modul juga dapat diimpor secara otomatis seperti yang ditentukan dalam implementasi yang ditentukan.
Jenis objek yang mewakili modul dijelaskan dalam §4.5.12.
Modul dibahas secara rinci dalam §11.
3.15 Ekspresi simbol pengganti
Ekspresi simbol pengganti mungkin berisi nol atau lebih dari elemen-elemen berikut:
| Elemen | Deskripsi |
|---|---|
| Karakter selain *, ?, atau [ | Cocok dengan satu karakter |
| * | Mencocokkan karakter nol atau lebih. Untuk mencocokkan karakter * , gunakan [*]. |
| ? | Mencocokkan dengan satu karakter apapun. Untuk mencocokkan dengan apa? karakter, gunakan [?]. |
| [atur] | Mencocokkan satu karakter dari himpunan , yang dalam himpunan, dan himpunan tersebut tidak boleh kosong. Jika set dimulai dengan ], tanda kurung siku kanan tersebut dianggap sebagai bagian dari set dan tanda kurung siku kanan berikutnya mengakhiri set; jika tidak, tanda kurung siku kanan pertama mengakhiri set. Jika set dimulai atau diakhiri dengan -, tanda hubung-minus tersebut dianggap sebagai bagian dari set ; jika tidak, ini menunjukkan rentang titik kode Unicode berturut-turut dengan karakter di kedua sisi tanda hubung-minus menjadi pembatas rentang inklusif. Misalnya, A-Z menunjukkan 26 huruf besar bahasa Inggris, dan 0-9 menunjukkan 10 digit desimal. |
Nota
Informasi selengkapnya dapat ditemukan di, Spesifikasi Dasar Grup Terbuka: Pencocokan Pola", IEEE Std 1003.1, 2004 Edition.. Namun, di PowerShell, karakter escape adalah backtick, bukan backslash.
3.16 Ekspresi reguler
Ekspresi reguler mungkin berisi nol atau beberapa elemen berikut:
| Elemen | Deskripsi |
|---|---|
| Karakter selain ., [, ^, *, $, atau \ | Cocok dengan satu karakter |
| . | Mencocokkan dengan satu karakter apapun. Untuk mencocokkan . karakter, gunakan \.. |
| [atur] [^atur] |
Bentuk [set] cocok dengan satu karakter dari himpunan . Bentuk [^set] tidak cocok dengan karakter dari set . set tidak boleh kosong. Jika set dimulai dengan ] atau ^], tanda kurung siku kanan tersebut dianggap sebagai bagian dari set dan tanda kurung siku kanan berikutnya mengakhiri pengaturan; jika tidak, tanda kurung siku kanan pertama mengakhiri pengaturan. Jika set dimulai dengan - atau ^-, atau diakhiri dengan -, maka tanda hubung-minus tersebut dianggap sebagai bagian dari set ; jika tidak, itu menunjukkan rentang titik kode Unicode berurutan dengan karakter di kedua sisi tanda hubung-minus menjadi pemisah rentang inklusif. Misalnya, A-Z menunjukkan 26 huruf besar bahasa Inggris, dan 0-9 menunjukkan 10 digit desimal. |
| * | Mencocokkan nol atau lebih kemunculan dari elemen sebelumnya. |
| + | Cocok dengan satu atau lebih kemunculan elemen sebelumnya. |
| ? | Mencocokkan nol atau satu kemunculan dari elemen sebelumnya. |
| ^ | Kesesuaian di awal string. Untuk mencocokkan karakter ^ , gunakan \^. |
| $ | Cocok di akhir string. Untuk mencocokkan karakter $, gunakan $. |
| \ c | Karakter cdi-escape, sehingga tidak dikenali sebagai elemen ekspresi reguler. |
Nota
Informasi selengkapnya dapat ditemukan di, Spesifikasi Dasar Grup Terbuka: Ekspresi Reguler, IEEE Std 1003.1, 2004 Edition..
Windows PowerShell: Dukungan diberikan untuk kelas karakter yang tersedia pada ekspresi reguler Microsoft .NET Framework, sebagai berikut:
| Elemen | Deskripsi |
|---|---|
\p{name} |
Mencocokkan karakter apa pun dari sebuah kelas karakter bernama yang ditentukan oleh nama . Nama yang didukung adalah grup Unicode dan rentang blok seperti Ll, Nd, Z, IsGreek, dan IsBoxDrawing. |
\P{name} |
Cocok dengan teks yang tidak disertakan dalam grup dan rentang blok yang ditentukan dalam nama . |
\w |
Mencocokkan karakter dari setiap kata. Setara dengan kategori karakter Unicode [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. Jika perilaku yang mematuhi ECMAScript ditentukan dengan opsi ECMAScript, \w setara dengan [a-zA-Z_0-9]. |
\W |
Cocok dengan karakter non-kata apa pun. Setara dengan kategori Unicode [\^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. |
\s |
Cocok dengan karakter spasi kosong apa pun. Setara dengan kategori karakter Unicode [\f\n\r\t\v\x85\p{Z}]. |
\S |
Cocok dengan karakter spasi non-putih. Setara dengan kategori karakter Unicode [\^\f\n\r\t\v\x85\p{Z}]. |
\d |
Cocok dengan digit desimal apa pun. Setara dengan \p{Nd} untuk Unicode dan [0-9] untuk perilaku non-Unicode. |
\D |
Cocok dengan non-digit apa pun. Setara dengan \P{Nd} untuk Unicode dan [\^0-9] untuk perilaku non-Unicode. |
Kuantifier yang tersedia dalam ekspresi reguler Microsoft .NET Framework didukung, sebagai berikut:
| Elemen | Deskripsi |
|---|---|
* |
Menentukan nol atau lebih kecocokan; misalnya, \w* atau (abc)*. Setara dengan {0,}. |
+ |
Mencocokkan kemunculan berulang dari karakter sebelumnya. |
? |
Menentukan nol atau satu kecocokan; misalnya, \w? atau (abc)?. Setara dengan {0,1}. |
{n} |
Menentukan persis n kecocokan; misalnya, (pizza){2}. |
{n,} |
Menentukan setidaknya dan kecocokan; misalnya, (abc){2,}. |
{n,m} |
Menentukan setidaknya n, tetapi tidak lebih dari m, cocok. |