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 elseifelse . 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

Lihat juga