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.
Atribut objek mengaitkan informasi sistem yang telah ditentukan sebelumnya dengan elemen target , yang dapat berupa blok param atau parameter (§8,10). Setiap objek atribut memiliki jenis atribut .
Informasi yang disediakan oleh atribut juga dikenal sebagai metadata . Metadata dapat diperiksa oleh perintah atau lingkungan eksekusi untuk mengontrol bagaimana perintah memproses data atau sebelum run time oleh alat eksternal untuk mengontrol bagaimana perintah itu sendiri diproses atau dipertahankan.
Beberapa atribut dapat diterapkan ke elemen target yang sama.
12.1 Spesifikasi atribut
Saran
Notasi ~opt~ dalam definisi sintaks menunjukkan bahwa entitas leksikal bersifat opsional dalam sintaks.
attribute-list:
attribute
attribute-list new-lines~opt~ attribute
attribute:
[ new-lines~opt~ attribute-name ( attribute-arguments new-lines~opt~ ) new-lines~opt~ ]
type-literal
attribute-name:
type-spec
attribute-arguments:
attribute-argument
attribute-argument new-lines~opt~ ,
attribute-arguments
attribute-argument:
new-lines~opt~ expression
new-lines~opt~ simple-name
new-lines~opt~ simple-name = new-lines~opt~ expression
Atribut terdiri dari nama atribut dan daftar argumen posisi dan argumen bernama yang opsional.
Argumen posisi (jika ada) mendahului argumen yang diberi nama. Argumen bernama terdiri dari nama sederhana, yang secara opsional diikuti oleh tanda sama dengan dan diikuti oleh sebuah ekspresi. Jika ekspresi dihilangkan, nilai $true diasumsikan.
nama atribut
12.2 Instans atribut
Instans atribut adalah objek dari jenis atribut. Instance mewakili atribut saat waktu eksekusi.
Untuk membuat objek dari beberapa jenis atribut A, gunakan notasi A(). Atribut dideklarasikan dengan mengapit instansnya di dalam [], seperti dalam [A()]. Beberapa jenis atribut memiliki parameter posisi dan nama (§8,14), sama seperti fungsi dan cmdlet. Misalnya
[A(10,IgnoreCase=$true)]
menunjukkan sebuah instans dari jenis yang dibuat menggunakan parameter posisi dengan nilai argumen 10, dan parameter bernama, IgnoreCase, dengan nilai argumen $true.
12.3 Atribut yang dicadangkan
Atribut yang dijelaskan di bagian berikut dapat digunakan untuk menambah atau memodifikasi perilaku fungsi, filter, skrip, dan cmdlet PowerShell.
12.3.1 Atribut Alias
Atribut ini digunakan dalam parameter skrip
Argumen atribut memiliki jenis string[].
Pertimbangkan panggilan fungsi Test1 yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true)]
[Alias("CN")]
[Alias("Name", "System")]
[string[]] $ComputerName
)
Test1 "Mars", "Saturn" # pass argument by position
Test1 -ComputerName "Mars", "Saturn" # pass argument by name
Test1 -CN "Mars", "Saturn" # pass argument using first alias
Test1 -Name "Mars", "Saturn" # pass argument using second alias
Test1 -Sys "Mars", "Saturn" # pass argument using third alias
Pertimbangkan panggilan fungsi Test2 yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
[Alias('PSPath')]
[string] $LiteralPath
)
Get-ChildItem "E:\*.txt" | Test2 -LiteralPath { $_ ; "`n`t";
$_.FullName + ".bak" }
Get-ChildItem "E:\*.txt" | Test2
Cmdlet Get-ChildItem (alias dir) menambahkan ke objek yang dikembalikan sebuah NoteProperty baru dari jenis string, yang disebut PSPath.
12.3.2 Atribut AllowEmptyCollection
Atribut ini digunakan dalam parameter skrip untuk memungkinkan koleksi kosong sebagai argumen dari parameter yang wajib.
Pertimbangkan panggilan fungsi Test yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true)]
[AllowEmptyCollection()]
[string[]] $ComputerName
)
Test "Red", "Green" # $ComputerName has Length 2
Test "Red" # $ComputerName has Length 1
Test -Comp @() # $ComputerName has Length 0
12.3.3 Atribut AllowEmptyString
Atribut ini digunakan dalam parameter skrip
Pertimbangkan panggilan fungsi Test yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true)]
[AllowEmptyString()]
[string] $ComputerName
)
Test "Red" # $ComputerName is "Red"
Test "" # empty string is permitted
Test -Comp "" # empty string is permitted
12.3.4 Atribut AllowNull
Atribut ini digunakan dalam parameter skrip
Pertimbangkan uji panggilan fungsi yang memiliki blok param berikut, dan yang dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true)]
[AllowNull()]
[int[]] $Values
)
Test 10, 20, 30 # $values has Length 3, values 10, 20, 30
Test 10, $null, 30 # $values has Length 3, values 10, 0, 30
Test -Val $null # $values has value $null
Perhatikan bahwa kasus kedua di atas tidak memerlukan atribut ini; sudah ada konversi implisit dari $null ke int.
12.3.5 Atribut CmdletBinding
Atribut ini digunakan dalam daftar atribut dari blok parameter dari sebuah fungsi untuk menunjukkan bahwa fungsi tersebut bertindak mirip dengan cmdlet. Khususnya, ini memungkinkan fungsi untuk mengakses sejumlah metode dan properti melalui variabel $PSCmdlet dengan menggunakan blok bernama begin, process, dan end (§8.10.7).
Ketika atribut ini ada, argumen posisi yang tidak memiliki parameter posisi yang cocok menyebabkan pengikatan parameter gagal dan $args tidak ditentukan. (Tanpa atribut ini $args akan mengambil nilai argumen posisional yang tidak cocok.)
Argumen berikut digunakan untuk menentukan karakteristik parameter:
| Nama Parameter | Tujuan |
|---|---|
| SupportsShouldProcess (dengan nama) | Jenis: bool; Nilai bawaan: $false Menentukan apakah fungsi mendukung panggilan ke metode ShouldProcess, yang digunakan untuk meminta umpan balik kepada pengguna sebelum fungsi membuat perubahan pada sistem. Nilai $true menunjukkan bahwa memang benar. Nilai $false menunjukkan tidak adanya hal tersebut. |
| ConfirmImpact (bernama) | Jenis: string; Nilai default: "Sedang" Menentukan tingkat dampak tindakan yang dilakukan. Panggilan ke metode ShouldProcess menampilkan perintah konfirmasi hanya ketika argumen ConfirmImpact lebih besar dari atau sama dengan nilai variabel preferensi $ConfirmPreference. Nilai yang mungkin dari argumen ini adalah: Tidak Ada: Sembunyikan semua permintaan untuk konfirmasi. Rendah: Tindakan yang dilakukan memiliki risiko rendah kehilangan data. Sedang: Tindakan yang dilakukan memiliki risiko kehilangan data yang sedang. Tinggi: Tindakan yang dilakukan memiliki risiko tinggi kehilangan data. Nilai $ConfirmPreference dapat diatur sehingga hanya cmdlet dengan tingkat dampak yang sama atau lebih tinggi yang dapat meminta konfirmasi sebelum melakukan operasi mereka. Misalnya, jika $ConfirmPreference diatur ke Sedang, cmdlet dengan tingkat dampak Sedang atau Tinggi dapat meminta konfirmasi. Permintaan dari cmdlet dengan tingkat dampak rendah dibatasi. |
| DefaultParameterSetName (bernama) | Jenis: string; Nilai default: "__AllParameterSets" Menentukan set parameter untuk digunakan jika hal tersebut tidak dapat ditentukan dari argumen. Lihat argumen bernama ParameterSetName di parameter Parameter ([§12.3.7][§12.3.7]). |
| PositionalBinding (dengan nama) | Jenis: bool; Nilai bawaan: $true Menentukan apakah pengikatan posisi didukung atau tidak. Nilai argumen ini diabaikan jika ada parameter yang menentukan nilai non-default untuk Posisi argumen bernama atau argumen bernama ParameterSetName dalam Parameter atribut ([§12.3.7][§12.3.7]). Jika argumen adalah $false, maka tidak ada parameter yang memiliki posisi. Sebaliknya, parameter diberi posisi berdasarkan urutan parameter ditentukan. |
Berikut adalah contoh kerangka kerja untuk menggunakan atribut ini:
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
param ( ... )
begin { ... }
Get-process { ... }
end { ... }
12.3.6 Atribut OutputType
Atribut ini digunakan dalam daftar atribut
| Nama Parameter | Tujuan |
|---|---|
| Jenis (posisi 0) | Jenis: string[] atau array dari tipe literal Daftar jenis nilai yang dikembalikan. |
| ParameterSetName (dengan nama) | Jenis: string[] Menentukan set parameter yang mengembalikan jenis yang ditunjukkan oleh elemen-elemen parameter Type yang sesuai. |
Berikut adalah beberapa contoh penggunaan atribut ini:
[OutputType([int])] param ( ... )
[OutputType("double")] param ( ... )
[OutputType("string","string")] param ( ... )
12.3.7 Atribut Parameter
Atribut ini digunakan dalam parameter skrip . Argumen bernama berikut digunakan untuk menentukan karakteristik parameter:
| Parameter | Tujuan |
|---|---|
| HelpMessage (dengan nama) | Jenis: teks Argumen ini menentukan pesan yang dimaksudkan untuk berisi deskripsi singkat parameter. Pesan ini digunakan dengan cara yang ditentukan implementasi ketika fungsi atau cmdlet dijalankan namun parameter wajib yang memiliki HelpMessage tidak memiliki argumen yang sesuai. Contoh berikut menunjukkan deklarasi parameter yang memberikan deskripsi parameter. param ( [Parameter(Wajib = $true, Windows PowerShell: Jika parameter yang diperlukan tidak disediakan, runtime meminta nilai parameter kepada pengguna. Kotak dialog perintah menyertakan teks HelpMessage. |
| Wajib (dengan nama) | Jenis: bool; Nilai bawaan: $false Argumen ini menentukan apakah parameter diperlukan dalam kumpulan parameter yang diberikan (lihat argumen ParameterSetName di bawah). Nilai $true menunjukkan bahwa kondisi tersebut benar. Nilai $false menunjukkan bahwa itu tidak demikian. param ( [Parameter(Wajib = $true)] Windows PowerShell: Jika parameter yang diperlukan tidak disediakan, runtime meminta nilai parameter kepada pengguna. Kotak dialog perintah menyertakan teks HelpMessage, jika ada. |
| ParameterSetName (dengan nama) | Jenis: string; Nilai default: "__AllParameterSets" Dimungkinkan untuk menulis satu fungsi atau cmdlet yang dapat melakukan tindakan yang berbeda untuk skenario yang berbeda. Ini dilakukan dengan mengekspos grup parameter yang berbeda tergantung pada tindakan yang ingin diambil. Pengelompokan parameter tersebut disebut set parameter . ParameterSetName argumen menentukan set parameter ke mana parameter termasuk. Perilaku ini berarti bahwa setiap set parameter harus memiliki satu parameter unik yang bukan anggota dari kumpulan parameter lainnya. Untuk parameter yang termasuk dalam beberapa set parameter, tambahkan atribut Parameter untuk setiap set parameter. Ini memungkinkan parameter didefinisikan secara berbeda untuk setiap set parameter. Set parameter yang berisi beberapa parameter posisi harus menentukan posisi unik untuk setiap parameter. Tidak ada dua parameter posisi yang dapat menentukan posisi yang sama. Jika tidak ada set parameter yang ditetapkan untuk suatu parameter, parameter tersebut adalah bagian dari semua set parameter. Ketika beberapa set parameter ditentukan, argumen bernama DefaultParameterSetName dari atribut CmdletBinding ([§12.3.5][§12.3.5]) digunakan untuk menentukan set parameter default. Runtime menggunakan set parameter default jika tidak dapat menentukan set parameter yang digunakan berdasarkan informasi yang disediakan oleh perintah, atau menghasilkan pengecualian jika tidak ada set parameter default yang ditentukan. Contoh berikut menunjukkan Pengujian fungsi dengan deklarasi parameter dua parameter yang termasuk dalam dua set parameter yang berbeda, dan parameter ketiga milik kedua set: param ( [Parameter(Wajib = $true, [Parameter(Wajib = $true, [Parameter(Wajib = $true, if ($PSCmdlet.ParameterSetName -eq "Computer") elseif ($PSCmdlet.ParameterSetName -eq "User") Tes -ComputerName "Mars","Venus" -SharedParam 10 |
| Posisi (bernama) | Jenis: int Argumen ini menentukan posisi parameter dalam daftar argumen. Jika argumen ini tidak ditentukan, nama parameter atau aliasnya harus ditentukan secara eksplisit saat parameter diatur. Jika tidak ada parameter fungsi yang memiliki posisi, posisi ditetapkan ke setiap parameter berdasarkan urutan penerimaannya. Contoh berikut menunjukkan deklarasi parameter yang nilainya harus ditentukan sebagai argumen pertama saat fungsi dipanggil. param ( [Parameter(Posisi = 0)] |
| ValueFromPipeline (bernama) | Jenis: bool; Nilai bawaan: $false Argumen ini menentukan apakah parameter menerima input dari objek alur. Nilai $true menunjukkan bahwa memang benar. Nilai $false menunjukkan bahwa itu tidak demikian. Tentukan $true jika fungsi atau cmdlet mengakses objek lengkap, bukan hanya properti objek. Hanya satu parameter dalam set parameter yang dapat mendeklarasikan ValueFromPipeline sebagai $true. Contoh berikut menunjukkan deklarasi parameter wajib, $ComputerName, yang menerima objek input yang diteruskan ke fungsi melalui pipeline. param ( [Parameter(Wajib = $true, Untuk contoh penggunaan parameter ini bersama dengan atribut Alias, lihat [§12.3.1][§12.3.1]. |
| ValueFromPipelineByPropertyName (dinamai) | Jenis: bool; Nilai bawaan: $false Argumen ini menentukan apakah parameter mengambil nilainya dari properti objek alur yang memiliki nama yang sama atau alias yang sama dengan parameter ini. Nilai $true menunjukkan bahwa memang benar. Nilai $false menunjukkan bahwa itu tidak demikian. Tentukan $true jika kondisi berikut ini benar: parameter mengakses properti objek yang disalurkan, dan properti memiliki nama yang sama dengan parameter , atau properti memiliki alias yang sama dengan parameter . Parameter yang memiliki ValueFromPipelineByPropertyName disetel ke $true tidak perlu memiliki parameter lain dalam set yang sama dengan ValueFromPipeline disetel ke $true. Jika fungsi memiliki parameter $ComputerName, dan objek piped memiliki properti ComputerName, nilai properti ComputerName ditetapkan ke parameter $ComputerName Fungsi: param ( [Parameter(Wajib = $true, Beberapa parameter dalam set parameter dapat menentukan ValueFromPipelineByPropertyName sebagai $true. Meskipun, satu objek input tidak dapat terikat ke beberapa parameter, properti yang berbeda dalam objek input tersebut mungkin terikat ke parameter yang berbeda. Saat mengikat parameter dengan properti objek input, lingkungan runtime terlebih dahulu mencari properti dengan nama yang sama dengan parameter . Jika properti seperti itu tidak ada, lingkungan runtime mencari alias untuk parameter tersebut, dalam urutan deklarasinya, memilih alias pertama seperti itu yang propertinya ada. fungsi Process-Date [Parameter(ValueFromPipelineByPropertyName=$true)] [Parameter(ValueFromPipelineByPropertyName=$true)] proses { ... } |
| NilaiDariArgumenTersisa (berikut nama) | Jenis: bool; Nilai bawaan: $false Argumen ini menentukan apakah parameter menerima semua argumen yang tersisa yang tidak terikat ke parameter fungsi. Nilai $true menunjukkan bahwa memang benar. Nilai $false menunjukkan bahwa itu tidak demikian. Contoh berikut menunjukkan parameter $Others yang menerima semua argumen objek input yang tersisa yang diteruskan ke Pengujian fungsi: param ( [Parameter(Wajib = $true)][int] $p1, Tes 10 20 # $Others memiliki panjang 0 |
Implementasi juga dapat mendefinisikan atribut lain.
Atribut berikut juga disediakan:
- HelpMessageBaseName: Menentukan lokasi tempat pengidentifikasi sumber daya berada. Misalnya, parameter ini dapat menentukan rakitan sumber daya yang berisi pesan Bantuan yang akan dilokalkan.
- HelpMessageResourceId: Menentukan pengidentifikasi sumber daya untuk pesan Bantuan.
12.3.8 Atribut PSDefaultValue
Atribut ini digunakan dalam parameter skrip untuk memberikan informasi tambahan tentang parameter. Atribut digunakan dengan cara yang ditentukan implementasi. Argumen berikut digunakan untuk menentukan karakteristik parameter:
| Nama Parameter | Tujuan |
|---|---|
| Bantuan [Nama] | Jenis: teks Argumen ini menentukan pesan yang dimaksudkan untuk berisi deskripsi singkat tentang nilai default parameter. Pesan ini digunakan dengan cara yang ditentukan implementasi. Windows PowerShell: Pesan digunakan sebagai bagian dari deskripsi parameter untuk topik bantuan yang ditampilkan oleh cmdlet [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help). |
| Nilai (yang diberi nama) | Jenis: objek Argumen ini menentukan nilai yang dimaksudkan untuk menjadi nilai default parameter. Nilai digunakan dengan cara yang ditentukan implementasi. Windows PowerShell: Nilai digunakan sebagai bagian dari deskripsi parameter untuk topik bantuan yang ditampilkan oleh [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help)cmdlet ketika properti Bantuan tidak ditentukan. |
12.3.9 Atribut SupportsWildcards
Atribut ini digunakan dalam parameter skrip untuk memberikan informasi tambahan tentang parameter. Atribut digunakan dengan cara yang ditentukan implementasi.
Atribut ini digunakan sebagai bagian dari deskripsi parameter untuk topik bantuan yang ditampilkan oleh cmdlet Get-Help
12.3.10 Atribut ValidateCount
Atribut ini digunakan dalam parameter skrip
| Nama Parameter | Tujuan |
|---|---|
| MinLength (posisi 0) | Jenis: int Argumen ini menentukan jumlah minimum nilai argumen yang diizinkan. |
| MaxLength (posisi 1) | Jenis: int Argumen ini menentukan jumlah maksimum nilai argumen yang diizinkan. |
Dengan tidak adanya atribut ini, daftar nilai argumen parameter yang sesuai dapat memiliki panjang berapa pun.
Pertimbangkan uji panggilan fungsi yang memiliki blok param berikut, dan yang dipanggil seperti yang ditunjukkan:
param (
[ValidateCount(2, 5)]
[int[]] $Values
)
Temp 10, 20, 30
Temp 10 # too few argument values
Temp 10, 20, 30, 40, 50, 60 # too many argument values
[ValidateCount(3, 4)]$Array = 1..3
$Array = 10 # too few argument values
$Array = 1..100 # too many argument values
12.3.11 Atribut ValidateLength
Atribut ini digunakan dalam parameter skrip atau variabel untuk menentukan panjang minimum dan maksimum argumen parameter, yang harus memiliki string jenis. Argumen berikut digunakan untuk menentukan karakteristik parameter:
| Nama Parameter | Tujuan |
|---|---|
| MinLength (posisi 0) | Jenis: int Argumen ini menentukan jumlah minimum karakter yang diizinkan. |
| MaxLength (posisi 1) | Jenis: int Argumen ini menentukan jumlah maksimum karakter yang diizinkan. |
Dengan tidak adanya atribut ini, argumen parameter yang sesuai dapat memiliki panjang apa pun.
Pertimbangkan uji panggilan fungsi yang memiliki blok param berikut, dan yang dipanggil seperti yang ditunjukkan:
param ( [Parameter(Mandatory = $true)]
[ValidateLength(3,6)]
[string[]] $ComputerName )
Test "Thor","Mars" # length is ok
Test "Io","Mars" # "Io" is too short
Test "Thor","Jupiter" # "Jupiter" is too long
12.3.12 Atribut ValidateNotNull
Atribut ini digunakan dalam parameter skrip atau variabel untuk menentukan bahwa argumen parameter tidak dapat $null atau menjadi koleksi yang berisi elemen bernilai null.
Pertimbangkan fungsi panggilan Test yang memiliki blok parameter berikut, yang dipanggil seperti ditunjukkan:
param (
[ValidateNotNull()]
[string[]] $Names
)
Test "Jack", "Jill" # ok
Test "Jane", $null # $null array element value not allowed
Test $null # null array not allowed
[ValidateNotNull()]$Name = "Jack" # ok
$Name = $null # null value not allowed
12.3.13 Atribut ValidateNotNullOrEmpty
Atribut ini digunakan dalam parameter skrip atau variabel untuk menentukan bahwa argumen jika parameter tidak dapat $null, string kosong, atau array kosong, atau menjadi koleksi yang berisi elemen string yang bernilai $null atau kosong.
Pertimbangkan panggilan fungsi Test yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[ValidateNotNullOrEmpty()]
[string[]] $Names
)
Test "Jack", "Jill" # ok
Test "Mary", "" # empty string not allowed
Test "Jane", $null # $null array element value not allowed
Test $null # null array not allowed
Test @() # empty array not allowed
[ValidateNotNullOrEmpty()]$Name = "Jack" # ok
$Name = "" # empty string not allowed
$Name = $null # null value not allowed
12.3.14 Atribut ValidatePattern
Atribut ini digunakan dalam parameter skrip atau variabel untuk menentukan ekspresi reguler untuk mencocokkan pola argumen parameter. Argumen berikut digunakan untuk menentukan karakteristik parameter:
| Nama Parameter | Tujuan |
|---|---|
| RegexString (posisi 0) | Jenis: String Ekspresi reguler yang digunakan untuk memvalidasi argumen parameter |
| Opsi yang diberi nama | Jenis: Reguler-Expression-Option Lihat [§4.2.6.4][§4.2.6.4] untuk nilai yang diizinkan. |
Jika argumen adalah koleksi, setiap elemen dalam koleksi harus cocok dengan pola.
Pertimbangkan panggilan fungsi Test yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[ValidatePattern('\^[A-Z][1-5][0-9]$')]
[string] $Code,
[ValidatePattern('\^(0x|0X)([A-F]|[a-f]|[0-9])([A-F]|[a-f]|[0-9])$')]
[string] $HexNum,
[ValidatePattern('\^[+|-]?[1-9]$')]
[int] $Minimum
)
Test -C A12 # matches pattern
Test -C A63 # does not match pattern
Test -H 0x4f # matches pattern
Test -H "0XB2" # matches pattern
Test -H 0xK3 # does not match pattern
Test -M -4 # matches pattern
Test -M "+7" # matches pattern
Test -M -12 # matches pattern, but is too long
[ValidatePattern('\^[a-z][a-z0-9]\*$')]$ident = "abc"
$ident = "123" # does not match pattern
12.3.15 Atribut ValidateRange
Atribut ini digunakan dalam parameter skrip atau variabel untuk menentukan nilai minimum dan maksimum argumen parameter. Argumen berikut digunakan untuk menentukan karakteristik parameter:
| Nama Parameter | Tujuan |
|---|---|
| MinRange (posisi 0) | Jenis: objek Argumen ini menentukan nilai minimum yang diizinkan. |
| MaxRange (posisi 1) | Jenis: objek Argumen ini menentukan nilai maksimum yang diizinkan. |
Dengan tidak adanya atribut ini, tidak ada batasan rentang.
Pertimbangkan panggilan fungsi Test1 yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true)]
[ValidateRange(1, 10)]
[int] $StartValue
)
Test1 2
Test1 -St 7
Test1 -3 # value is too small
Test1 12 # value is too large
Pertimbangkan panggilan fungsi Test2 yang memiliki blok parameter dan panggilan berikut.
param (
[Parameter(Mandatory = $true)]
[ValidateRange("b", "f")]
[string] $Name
)
Test2 "Bravo" # ok
Test2 "Alpha" # value compares less than the minimum
Test2 "Hotel" # value compares greater than the maximum
Pertimbangkan panggilan fungsi Test3 yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true)]
[ValidateRange(0.002, 0.003)]
[double] $Distance
)
Test3 0.002
Test3 0.0019 # value is too small
Test3 "0.005" # value is too large
[ValidateRange(13, 19)]$teenager = 15
$teenager = 20 # value is too large
12.3.16 Atribut ValidateScript
Atribut ini digunakan dalam parameter skrip
Argumen dalam posisi 1 adalah script-block-expression.
Pertimbangkan panggilan fungsi Test yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param (
[Parameter(Mandatory = $true)]
[ValidateScript( { ($_ -ge 1 -and $_ -le 3) -or ($_ -ge 20) })]
[int] $Count
)
Test 2 # ok, valid value
Test 25 # ok, valid value
Test 5 # invalid value
Test 0 # invalid value
[ValidateScript({$_.Length --gt 7})]$password = "password" # ok
$password = "abc123" # invalid value
12.3.17 Atribut ValidateSet
Atribut ini digunakan dalam parameter skrip atau variabel untuk menentukan sekumpulan nilai yang valid untuk argumen parameter. Argumen berikut digunakan untuk menentukan karakteristik parameter:
| Nama Parameter | Tujuan |
|---|---|
| ValidValues (posisi 0) | Jenis: string[] Kumpulan nilai yang valid. |
| IgnoreCase (bernama) | Jenis: bool; Nilai bawaan: $true Menentukan apakah kasus harus diabaikan untuk parameter bertipe string. |
Jika parameter memiliki jenis array, setiap elemen array argumen yang sesuai harus cocok dengan elemen dari kumpulan nilai.
Pertimbangkan panggilan fungsi Test yang memiliki blok parameter berikut, dan dipanggil seperti yang ditunjukkan:
param ( [ValidateSet("Red", "Green", "Blue")]
[string] $Color,
[ValidateSet("up", "down", "left", "right", IgnoreCase =
$false)]
[string] $Direction
)
Test -Col "RED" # case is ignored, is a member of the set
Test -Col "white" # case is ignored, is not a member of the set
Test -Dir "up" # case is not ignored, is a member of the set
Test -Dir "Up" # case is not ignored, is not a member of the set
[ValidateSet(("Red", "Green", "Blue")]$color = "RED" # ok, case is ignored
$color = "Purple" # case is ignored, is not a member of the set