Belajar PowerShell - Conditional Logic: If, Else & Switch
Episode 5 of 31

Belajar PowerShell - Conditional Logic: If, Else & Switch

Membuat script PowerShell mengambil keputusan: struktur if, elseif, dan else, penggunaan operator perbandingan dalam kondisi, konsep nilai kebenaran dan $null, pernyataan switch dengan wildcard dan regex, serta fitur modern ternary dan null-coalescing di PowerShell 7, ditutup latihan praktis memeriksa status service.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 4 kalian mengenal operator perbandingan dan logika — sekarang saatnya menggunakannya untuk hal yang paling penting: membuat keputusan. Sebuah script yang selalu menjalankan baris yang sama tanpa melihat keadaan hanyalah daftar tugas. Script yang berguna adalah script yang menyesuaikan diri — "kalau service mati, hidupkan; kalau sudah jalan, laporkan saja".

Episode 5 ini mengajarkan struktur keputusan: if, elseif, else, dan switch. Ini adalah otak dari hampir semua logic script di dunia nyata — dari validasi input, pengecekan status, hingga routing dalam fungsi yang kompleks.

Struktur Dasar: if, elseif, else

Bentuk paling sederhana adalah if dengan satu kondisi:

if sederhana
$suhu = 39
if ($suhu -gt 37) {
    Write-Host "Demam terdeteksi"
}

Kondisi di dalam tanda kurung dievaluasi menjadi $true atau $false. Jika $true, blok di dalam kurung kurawal dijalankan. Untuk dua kemungkinan, tambahkan else:

if dengan else
$suhu = 36
if ($suhu -gt 37) {
    Write-Host "Demam terdeteksi"
} else {
    Write-Host "Suhu normal"
}

Dan untuk lebih dari dua cabang, rangkai elseif:

Rantai elseif
$skor = 85
if ($skor -ge 90) {
    Write-Host "Nilai A"
} elseif ($skor -ge 80) {
    Write-Host "Nilai B"
} elseif ($skor -ge 70) {
    Write-Host "Nilai C"
} else {
    Write-Host "Nilai D"
}

Perhatikan urutan evaluasi: PowerShell memeriksa if terlebih dahulu, lalu elseif dari atas ke bawah, dan berhenti di cabang pertama yang cocok. Urutan kondisi menentukan hasil, jadi susun dari kondisi paling spesifik.

Kondisi dengan Operator Perbandingan

Gabungkan if dengan operator yang kalian pelajari di episode 4. Contoh umum — pengecekan wildcard dan regex:

Perbandingan dalam kondisi
$server = "web-01"
if ($server -like "web-*") {
    Write-Host "Server web terdeteksi"
}
 
$namaFile = "invoice_2026.pdf"
if ($namaFile -match "_2026") {
    Write-Host "File tahun 2026"
}

Ingat: perbandingan string tidak peka huruf besar/kecil secara default, dan hasil -match bisa mempengaruhi variabel otomatis $matches — akan dibahas dalam di episode regular expressions.

Nilai Kebenaran dan $null

Setiap nilai di PowerShell dapat dinilai sebagai benar atau salah. Beberapa nilai dianggap salah (falsy):

NilaiHasil Evaluasi
$falsesalah
$nullsalah
0salah
String kosongsalah
Array kosongsalah

Segala sesuatu yang lain — angka bukan nol, string berisi teks, array berisi item — dianggap benar. Ini memungkinkan penulisan yang ringkas:

Memanfaatkan nilai kebenaran
$hasil = Get-Command pwsh -ErrorAction SilentlyContinue
if ($hasil) {
    Write-Host "PowerShell 7 terpasang"
}
 
$nama = ""
if ($nama) {
    Write-Host "Nama terisi: $nama"
} else {
    Write-Host "Nama kosong"
}

Cek $null secara eksplisit adalah kebiasaan yang disarankan saat membaca hasil perintah yang mungkin tidak mengembalikan apa pun — mencegah error "Membaca properti null" yang paling sering menimpa pemula.

Pernyataan switch

Ketika kalian membandingkan satu nilai dengan banyak kemungkinan, rantai elseif menjadi panjang dan berulang. switch menggantikannya dengan tabel cabang yang jauh lebih terbaca:

switch dasar
$hari = "senin"
switch ($hari) {
    "senin" { Write-Host "Mulai kerja mingguan" }
    "jumat" { Write-Host "Hampir akhir pekan" }
    "sabtu" { Write-Host "Libur" }
    "minggu" { Write-Host "Libur" }
    default { Write-Host "Hari kerja biasa" }
}

switch bahkan bisa menerima array — memproses setiap elemen satu per satu — dan mendukung pencocokan wildcard atau regex dengan flag:

switch dengan wildcard dan regex
$files = @("report.pdf", "image.png", "script.ps1")
switch -Wildcard ($files) {
    "*.pdf" { Write-Host "$_ dokumen PDF" }
    "*.png" { Write-Host "$_ gambar" }
    "*.ps1" { Write-Host "$_ script PowerShell" }
    default { Write-Host "$_ tipe lain" }
}
Flag switchFungsi
-WildcardCocokkan dengan pola *
-RegexCocokkan dengan regular expression
-CaseSensitivePencocokan peka huruf besar/kecil
defaultCabang untuk nilai yang tidak cocok

Ternary dan Null-Coalescing (PowerShell 7)

PowerShell 7 memperkenalkan dua permen sintaks dari bahasa modern: ternary operator dan null-coalescing.

Ternary adalah if/else satu baris — cocok untuk memilih nilai, bukan untuk alur panjang:

Ternary operator
$usia = 20
$status = ($usia -ge 17) ? "Dewasa" : "Anak-anak"
Write-Host $status

Null-coalescing ?? menyediakan nilai cadangan saat hasilnya $null — sempurna untuk nilai default:

Null-coalescing
$nama = $null
$tampilan = $nama ?? "Pengguna tanpa nama"
Write-Host $tampilan

Bandingkan dengan cara lama yang bertele-tele: memeriksa $nama kosong lalu menetapkan nilai default dalam beberapa baris. ?? menuliskan niat dalam satu baris. Gunakan keduanya dengan hemat — untuk pengambilan nilai singkat, bukan untuk logika yang rumit.

Latihan Praktis

Gabungkan semuanya: script yang memeriksa status sebuah service dan mengambil tindakan. Simpan sebagai cek-service.ps1 dan jalankan dengan pwsh ./cek-service.ps1:

cek-service.ps1: keputusan berdasarkan keadaan
$service = "Spooler"
 
$info = Get-Service -Name $service -ErrorAction SilentlyContinue
if (-not $info) {
    Write-Host "Service $service tidak ditemukan." -ForegroundColor Red
    exit 1
}
 
switch ($info.Status) {
    "Running" { Write-Host "Service $service sehat." -ForegroundColor Green }
    "Stopped" {
        Write-Host "Service $service mati. Mencoba menyalakan..."
        Start-Service -Name $service
        $baru = Get-Service -Name $service
        if ($baru.Status -eq "Running") {
            Write-Host "Berhasil dinyalakan." -ForegroundColor Green
        } else {
            Write-Host "Gagal menyalakan." -ForegroundColor Red
        }
    }
    default { Write-Host "Status tak terduga: $($info.Status)" -ForegroundColor Yellow }
}

Script ini memakai semua konsep episode ini sekaligus: cek $null (service tidak ada), if untuk keputusan, switch untuk status, dan tindakan berdasarkan keadaan. Catat pola $($info.Status) di dalam string — sintaks ini menyisipkan properti objek ke dalam interpolasi, alat kecil yang akan kalian pakai terus.

Warning

Saat menguji script yang memulai atau menghentikan service, jalankan dengan hak yang cukup — beberapa service menuntut console administrator. Dan mulai sekarang biasakan menulis script ke file (.ps1) lalu menjalankannya, bukan sekadar menyalin perintah ke console, agar pekerjaan kalian tersimpan dan bisa diulang.

Penutup

Episode 5 ini mengajarkan otak script: if, elseif, dan else untuk keputusan bertingkat, operator perbandingan sebagai bahan kondisi, konsep nilai kebenaran dan $null yang sering menjadi sumber bug, switch untuk percabangan bersih yang bisa mencocokkan array, wildcard, dan regex, serta ternary dan null-coalescing untuk pilihan nilai yang ringkas di PowerShell 7.

Inti yang harus kalian bawa:

  • if dievaluasi dari atas ke bawah; urutan cabang menentukan hasil.
  • $null, 0, dan string kosong bernilai salah — cek $null secara eksplisit saat membaca hasil perintah.
  • switch lebih terbaca daripada rantai elseif untuk banyak cabang.
  • Ternary ? : dan null-coalescing ?? adalah permen sintaks PowerShell 7 untuk pilihan nilai singkat.
  • Script yang baik adalah script yang menyesuaikan diri dengan keadaan — seperti cek-service.ps1.

Di episode 6 selanjutnya kita belajar loops & iterationforeach, for, while, dan do — bagaimana memproses koleksi data secara massal, mengulang hingga kondisi terpenuhi, dan menghindari infinite loop. Materi keputusan di episode ini akan menjadi pasangan sempurna untuk materi perulangan berikutnya. Sampai jumpa di episode 6!

Belajar PowerShell - Conditional Logic: If, Else & Switch | Belajar PowerShell