about_If
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 if
pernyataan 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 lainnya yang dievaluasi ke true.
Sintaks
Contoh berikut menunjukkan if
sintaks pernyataan:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Saat Anda menjalankan if
pernyataan, PowerShell mengevaluasi <test1>
ekspresi kondisional sebagai benar atau salah. Jika <test1>
benar, <statement list 1>
eksekusi, dan PowerShell keluar dari if
pernyataan. 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>
eksekusi, dan PowerShell keluar dari if
pernyataan. Jika keduanya <test1>
dan <test2>
mengevaluasi ke false, <statement list 3
> blok kode berjalan, dan PowerShell keluar dari if
pernyataan.
Anda dapat menggunakan beberapa elseif
pernyataan untuk menautkan serangkaian pengujian kondisional. Setiap pengujian dijalankan hanya jika semua pengujian sebelumnya salah. Jika Anda perlu membuat if
pernyataan yang berisi banyak elseif
pernyataan, pertimbangkan untuk menggunakan pernyataan Switch sebagai gantinya.
Contoh:
Pernyataan paling if
sederhana berisi satu perintah dan tidak berisi pernyataan atau pernyataan apa pun elseif
else
. Contoh berikut menunjukkan bentuk pernyataan paling if
sederhana:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
Dalam contoh ini, jika $a
variabel lebih besar dari 2
, kondisi mengevaluasi ke true, dan daftar pernyataan berjalan. Namun, jika $a
kurang dari atau sama dengan 2
atau bukan variabel yang ada, if
pernyataan 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 lebih menyempurnakan contoh ini, Anda dapat menggunakan elseif
pernyataan 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 berulah seperti pernyataan yang disederhanakan if-else
. Ekspresi <condition>
dievaluasi dan hasilnya dikonversi ke boolean untuk menentukan cabang mana yang harus dievaluasi berikutnya:
- Ekspresi
<if-true>
dijalankan jika<condition>
ekspresinya benar - Ekspresi
<if-false>
dijalankan jika<condition>
ekspresi salah
Contohnya:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
Dalam contoh ini, nilainya $message
adalah Path exists
ketika Test-Path
mengembalikan $true
. Saat Test-Path
mengembalikan $false
, nilainya $message
adalah Path not found
.
$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)
Dalam contoh ini, jika layanan berjalan, layanan dihentikan, dan jika statusnya tidak Berjalan, layanan dimulai.
<condition>
Jika ekspresi , <if-true>
, atau <if-false>
memanggil perintah, Anda harus membungkusnya dalam tanda kurung. Jika tidak, PowerShell menaikkan pengecualian argumen untuk perintah dalam <condition>
ekspresi dan mengurai pengecualian untuk <if-true>
ekspresi dan <if-false>
.
Misalnya, PowerShell memunculkan pengecualian untuk terari 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