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.
Deskripsi singkat
Menjelaskan perintah bahasa yang dapat Anda gunakan untuk menjalankan daftar pernyataan berdasarkan hasil satu atau beberapa pengujian kondisional.
Deskripsi panjang
Anda dapat menggunakan pernyataan if untuk menjalankan blok kode jika pengujian kondisional tertentu dievaluasi ke true. Anda juga dapat menentukan satu atau beberapa pengujian kondisional tambahan untuk dijalankan jika semua pengujian sebelumnya dievaluasi ke false. Terakhir, Anda dapat menentukan blok kode tambahan yang dijalankan jika tidak ada pengujian kondisional sebelumnya yang dievaluasi menjadi benar.
Sintaksis
Contoh berikut menunjukkan sintaks pernyataan if:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Saat Anda menjalankan pernyataan if, PowerShell mengevaluasi ekspresi kondisional <test1> sebagai benar atau salah. Jika <test1> benar, <statement list 1> berjalan, dan PowerShell keluar dari pernyataan if. Jika <test1> salah, PowerShell mengevaluasi kondisi yang ditentukan oleh pernyataan kondisional <test2>.
Untuk informasi selengkapnya tentang evaluasi boolean, lihat about_Booleans.
Jika <test2> benar, <statement list 2> berjalan, dan PowerShell keluar dari pernyataan if. Jika baik <test1> maupun <test2> dievaluasi menjadi false, blok kode <statement list 3> dijalankan, dan PowerShell keluar dari pernyataan if.
Anda dapat menggunakan beberapa pernyataan elseif untuk menautkan serangkaian pengujian kondisional. Setiap pengujian dijalankan hanya jika semua pengujian sebelumnya salah. Jika Anda perlu membuat pernyataan if yang berisi banyak pernyataan elseif, pertimbangkan untuk menggunakan pernyataan switch sebagai gantinya.
Contoh:
Pernyataan if paling sederhana berisi satu perintah dan tidak berisi pernyataan elseif atau pernyataan else apa pun. Contoh berikut menunjukkan bentuk paling sederhana dari pernyataan if:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
Dalam contoh ini, jika variabel $a lebih besar dari 2, kondisi bernilai benar, dan daftar pernyataan dijalankan. Namun, jika $a kurang dari atau sama dengan 2 atau bukan variabel yang ada, pernyataan if tidak menampilkan pesan.
Dengan menambahkan pernyataan else, pesan ditampilkan saat $a kurang dari atau sama dengan 2. Seperti yang ditunjukkan contoh berikutnya:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
else {
Write-Host ("The value $a is less than or equal to 2," +
" is not created or is not initialized.")
}
Untuk menyempurnakan contoh ini lebih lanjut, Anda dapat menggunakan pernyataan elseif untuk menampilkan pesan ketika nilai $a sama dengan 2. Seperti yang ditunjukkan contoh berikutnya:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
Write-Host "The value $a is equal to 2."
}
else {
Write-Host ("The value $a is less than 2 or" +
" was not created or initialized.")
}
Menggunakan sintaks operator terner
PowerShell 7.0 memperkenalkan sintaks baru menggunakan operator ternary. Ini mengikuti sintaks operator ternary C#:
<condition> ? <if-true> : <if-false>
Operator ternary berfungsi seperti pernyataan if-else yang disederhanakan. Ekspresi <condition> dievaluasi dan hasilnya dikonversi ke boolean untuk menentukan cabang mana yang harus dievaluasi berikutnya:
- Ekspresi
<if-true>dijalankan jika ekspresi<condition>benar - Ekspresi
<if-false>dijalankan jika ekspresi<condition>salah
Misalnya:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
Dalam contoh ini, nilai $message adalah Path exists saat Test-Path mengembalikan $true. Saat Test-Path mengembalikan $false, nilai $message adalah Path not found.
$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)
Dalam contoh ini, jika layanan sedang berjalan, maka layanan tersebut akan dihentikan, dan jika statusnya bukan Berjalan, maka layanan tersebut akan dimulai.
Jika ekspresi <condition>, <if-true>, atau <if-false> memanggil perintah, Anda harus membungkusnya dalam tanda kurung. Jika tidak, PowerShell menghasilkan pengecualian argumen untuk perintah dalam ekspresi <condition> dan pengecualian penguraian untuk ekspresi <if-true> dan <if-false>.
Misalnya, PowerShell memunculkan pengecualian untuk operator ternary ini:
Test-Path .vscode ? Write-Host 'exists' : Write-Host 'not found'
(Test-Path .vscode) ? Write-Host 'exists' : Write-Host 'not found'
(Test-Path .vscode) ? (Write-Host 'exists') : Write-Host 'not found'
Test-Path: A positional parameter cannot be found that accepts argument '?'.
ParserError:
Line |
1 | (Test-Path .vscode) ? Write-Host 'exists' : Write-Host 'not found'
| ~
| You must provide a value expression following the '?' operator.
ParserError:
Line |
1 | (Test-Path .vscode) ? (Write-Host 'exists') : Write-Host 'not found'
| ~
| You must provide a value expression following the ':' operator.
Dan contoh ini mengurai:
(Test-Path .vscode) ? (Write-Host 'exists') : (Write-Host 'not found')
exists