Memahami cara menyimpan dan mengelola data di PowerShell: variabel dengan $nama, variabel otomatis dan preferensi, tipe data dari string, angka, boolean, datetime, array, dan hashtable, teknik casting, manipulasi string dengan interpolasi dan here-string, format operator, serta perbedaan array, ArrayList, dan generic List.

Di episode 2 kalian sudah berbicara dengan PowerShell lewat cmdlet Verb-Noun. Sekarang tiba saatnya menyentuh bahan baku semua script: data. Setiap script — sekecil apa pun — pada akhirnya membaca data, menyimpannya, memodifikasinya, lalu menampilkan hasilnya. Episode 3 ini membekali kalian dengan bahasa untuk mengelola data itu: variabel dan tipe data.
Anggap variabel sebagai kotak berlabel di meja kerja — kalian menaruh, memberi nama, dan mengambil kembali sesuatu kapan saja. Sedangkan tipe data adalah jenis isi kotak: teks, angka, daftar, atau pasangan kunci-nilai. Memahami keduanya menentukan seberapa halus kalian mengendalikan script.
Variabel di PowerShell selalu diawali tanda dolar. Nama variabel tidak peka huruf besar/kecil — $nama sama dengan $NAMA — dan tidak boleh mengandung spasi atau diawali angka. Buat dan pakai variabel pertama kalian:
$nama = "Arman"
$usia = 28
Write-Host "Halo, $nama"PowerShell menyediakan variabel bawaan yang selalu ada dan diisi otomatis oleh sistem. Tiga yang paling sering kalian jumpai:
| Variabel | Isi | Contoh Penggunaan |
|---|---|---|
$PSVersionTable | Informasi engine PowerShell | Cek versi dan edisi |
$_ | Item saat ini di pipeline | Parameter di Where-Object |
$args | Argumen fungsi/script | Membaca parameter posisi |
$_ khususnya adalah sahabat pipeline — di episode episode fungsi dan pipeline, kalian akan memakainya terus. Sebagai latihan cepat, lihat isi $PSVersionTable.PSVersion di console kalian.
Variabel preferensi mengubah perilaku default sesi. Dua yang paling berpengaruh:
| Variabel | Mengontrol | Nilai Umum |
|---|---|---|
$ErrorActionPreference | Bagaimana error ditangani | Continue, Stop, SilentlyContinue |
$VerbosePreference | Seberapa detail pesan verbose | SilentlyContinue, Continue |
Misalnya, agar script berhenti segera saat error, atur $ErrorActionPreference = "Stop" di awal — perintah yang gagal akan menghentikan eksekusi.
Prefix $env: membaca variabel lingkungan Windows — data yang tersedia untuk semua proses, seperti siapa pengguna yang login. Coba $env:USERNAME untuk nama pengguna aktif dan $env:PATH untuk daftar folder program — sangat berguna untuk script yang menyesuaikan path per pengguna.
Setiap nilai di PowerShell memiliki tipe. Prefix dengan [tipe] memperjelas atau memaksa interpretasi:
| Tipe | Accelerator | Contoh Nilai |
|---|---|---|
| Teks | [string] | "Halo dunia" |
| Bilangan bulat | [int] | 42 |
| Bilangan besar | [int64] | 9223372036854775807 |
| Bilangan desimal | [double] | 3.14 |
| Presisi tinggi | [decimal] | 0.99 |
| Kebenaran | [bool] | $true, $false |
| Waktu & tanggal | [datetime] | 2026-08-03 |
| Daftar nilai | [array] | 1, 2, 3 |
| Pasangan kunci-nilai | [hashtable] | nama menuju nilai |
| Objek kustom | [PSCustomObject] | Objek buatan sendiri |
Cek tipe sebuah nilai dengan GetType():
(42).GetType().Name
(3.14).GetType().Name
("teks").GetType().NameCasting memaksa sebuah nilai berubah tipe — penting karena perilaku operasi tergantung tipe: 1 + 2 menghasilkan 3, sedangkan "1" + "2" menghasilkan teks "12":
[int]"42"
[string]42
[int]$false
[datetime]"2026-08-03"Casting bukan hanya konversi — ia juga validasi. [int]"abc" akan error karena "abc" bukan angka. Ini berguna untuk memvalidasi input di script nanti.
String adalah tipe yang paling sering dipakai, jadi kuasai cara memanipulasinya.
Menggabungkan string bisa dengan tanda + atau langsung menyisipkan variabel dalam tanda kutip ganda:
$depan = "Arman"
$gabungan = $depan + " Dwi"
$selamat = "Halo, $depan"
Write-Host $gabungan
Write-Host $selamatInterpolasi dengan kutip ganda hanya terjadi jika variabel berada di dalam kutip ganda; kutip tunggal menganggap semuanya teks mentah.
Untuk teks panjang dengan banyak baris, here-string adalah jawabannya — bentuknya dibuka dan ditutup tiga kutip. Buka dan tutup dengan kutip ganda jika kalian ingin variabel diinterpolasi, atau kutip tunggal jika semuanya harus dianggap teks literal:
$nama = "Arman"
$surat = @"
Halo $nama,
Ini isi surat yang panjang.
Variabel $nama akan diinterpolasi di sini.
"@
Write-Host $suratVarian kutip tunggal (dibuka dan ditutup @' dan '@) bekerja identik, kecuali satu hal: $nama di dalamnya dibaca sebagai teks biasa, bukan variabel. Pilih sesuai kebutuhan — interpolasi untuk template, literal untuk kode yang ingin ditampilkan apa adanya.
Setiap string punya method bawaan .NET untuk manipulasi: .ToUpper() mengubah ke huruf besar, .Replace() mengganti potongan teks, .Trim() membuang spasi di pinggir, dan .Length memberi tahu panjang teks:
$kata = "PowerShell"
$kata.ToUpper()
$kata.Replace("Shell", "Awan")
" rapi ".Trim()
$kata.LengthOperator format -f menyisipkan nilai ke posisi yang sudah ditentukan — alternatif yang bersih untuk interpolasi yang rumit:
$tahun = 2026
"Belajar {0} dimulai tahun {1}" -f "PowerShell", $tahunPerbandingan string di PowerShell tidak peka huruf besar/kecil secara default — "Powershell" -eq "powershell" bernilai $true. Jika kalian butuh pembandingan yang sensitif, tambahkan huruf c: -ceq. Detail ini mencegah bug klasik saat memfilter data.
Array adalah koleksi nilai berurutan. Buat, indeks, dan hitung isinya:
$buah = @("Apel", "Mangga", "Pisang")
$buah[0]
$buah.Count
$buah[0..1]Indeks dimulai dari nol: $buah[0] mengambil elemen pertama. Operator .. membuat rentang, sehingga $buah[0..1] mengambil dua elemen pertama sekaligus.
Array standar bersifat tetap panjang, jadi menambah elemen berarti membuat array baru:
$buah = @("Apel", "Mangga")
$buah += "Pisang"
$buah.CountSintaks += sederhana, tapi untuk penambahan ribuan kali, menyalin ulang seluruh array menjadi lambat. Untuk skenario itu, gunakan ArrayList atau generic List:
$daftar = [System.Collections.ArrayList]::new()
[void]$daftar.Add("Apel")
[void]$daftar.Add("Mangga")
$daftar.CountAturan praktisnya: array @(...) untuk koleksi statis, ArrayList/List untuk koleksi yang tumbuh dinamis. [void] di depan .Add() menekan output method agar tidak memenuhi layar.
Note
[hashtable] dan [PSCustomObject] akan dibedah dalam di episode episode pipeline dan object manipulation. Konsep kuncinya sejak sekarang: array untuk daftar berurutan, hashtable untuk pencarian cepat berdasar kunci, dan objek kustom untuk membentuk data dengan properti bernama yang rapi.
Episode 3 ini memberi kalian kendali atas data: variabel $nama, variabel otomatis dan preferensi, tipe data dari string hingga hashtable, casting untuk konversi dan validasi, seni manipulasi string dengan interpolasi, here-string, method, dan format operator, serta array dengan segala variannya.
Inti yang harus kalian bawa:
$_, $PSVersionTable, dan $env: adalah yang paling sering kalian temui.[int] dan [string] mengubah cara operasi bekerja.@(...) untuk koleksi statis; ArrayList/List untuk koleksi yang tumbuh.Di episode 4 selanjutnya kita mempelajari operators & expressions — aritmatika, perbandingan, logika, assignment, redirection, dan operator khusus seperti dot-sourcing, range, serta format. Ini adalah "mesin" yang menggerakkan data yang baru saja kalian kuasai. Sampai jumpa di episode 4!