Menelusuri asal-usul PowerShell: dari Batch dan VBScript yang rapuh, kelahiran proyek Monad tahun 2006, evolusi versi 1.0 hingga 7 yang cross-platform, alasan mengapa PowerShell dibutuhkan dunia, perbandingannya dengan CMD, Python, dan Bash, serta kasus penggunaannya di dunia nyata.

Setelah di episode 0 kita memastikan environment siap — skill command line, hardware memadai, dan pwsh terverifikasi — pada episode kali ini kita mundur sejenak untuk menjawab pertanyaan yang jarang diajukan tapi sangat menentukan: dari mana PowerShell berasal, dan mengapa dunia membutuhkannya?
Pertanyaan ini bukan sekadar trivia sejarah. Memahami latar belakang PowerShell menjawab tiga pertanyaan praktis: (1) mengapa PowerShell dirancang berbeda dari CMD atau Bash, (2) kapan kalian harus menulis PowerShell dan kapan lebih bijak memakai Python, dan (3) mengapa hampir semua administrator Windows modern mengandalkannya — dari server fisik hingga cloud. Seperti memahami sejarah sebuah bahasa, memahami sejarah shell membuat kalian tidak hanya bisa memakai, tapi tahu kapan memakai.
Sebelum PowerShell, admin Windows menulis Batch — file .bat atau .cmd yang berisi perintah Command Prompt. Batch bekerja dengan model sederhana: teks masuk, teks keluar. Untuk pekerjaan kecil seperti menyalin file atau menjalankan program, ini cukup. Tapi begitu pekerjaan menguji logika — memeriksa hasil sebuah perintah, memfilter output, mengambil keputusan — Batch menjadi sangat rapuh. Output antar versi Windows bisa berbeda, spasi di dalam string membuat parsing salah, dan tidak ada cara bersih untuk memproses data terstruktur.
Pada tahun 1999 Microsoft merilis Windows Script Host (WSH) yang memungkinkan VBScript berjalan langsung di Windows. Ini kemajuan nyata: VBScript punya variabel, kondisi, dan loop yang jauh lebih baik daripada Batch, serta bisa mengakses sistem lewat COM objects. Namun VBScript juga text-centric — memanipulasi data masih lewat parsing teks, dan sintaksnya terasa kaku. Mengotomasi administrasi di VBScript terasa seperti menulis esai dengan palu.
Windows Management Instrumentation (WMI) memberi Windows akses ke data sistem yang sangat kaya — proses, service, hardware, event — dalam bentuk objek. Ini langkah besar, tapi antarmukanya kejam bagi pemula: sintaks WQL yang bertele-tele, output yang sulit dikombinasikan dengan perintah lain, dan integrasi antar tool yang nyaris tidak ada. Admin punya data melimpah, tapi tetap kesulitan mengotomasi pekerjaan sehari-hari secara mulus.
Pada awal 2000-an, Jeffrey Snover, arsitek yang kelak disebut "bapak PowerShell", menulis sebuah dokumen bernama Monad Manifesto dengan satu ide utama: membuat Windows bisa dikelola. Saat itu Unix punya shell yang kuat dengan pipeline, sementara Windows punya banyak tool terpisah yang tidak saling terhubung. Snover mengusulkan shell baru yang memakai pipeline berbasis objek — bukan teks.
Gagasan kuncinya sederhana namun revolusioner: di shell tradisional, output sebuah perintah adalah teks yang harus di-parse ulang oleh perintah berikutnya. Di Monad, output sebuah perintah adalah objek .NET yang bisa langsung difilter, dipilih, dan disalurkan — tanpa parsing teks sama sekali. Proyek ini berganti nama menjadi Windows PowerShell dan dirilis pada November 2006. Sejak saat itu, cara dunia mengelola Windows berubah total.
| Versi | Tahun | Sorotan |
|---|---|---|
| 1.0 | 2006 | Rilis pertama; cmdlet dasar dan pipeline objek |
| 2.0 | 2009 | Remoting (WinRM), background jobs, ISE |
| 3.0 | 2012 | Workflows, scheduled jobs, peningkatan performa |
| 4.0 | 2013 | Desired State Configuration (DSC) |
| 5.0 / 5.1 | 2016 | Class, OneGet; menjadi bawaan Windows 10 |
| Core 6.0 | 2018 | Cross-platform: Linux dan macOS |
| 7.0+ | 2020 | Modern, unified, open source di GitHub |
Poin paling penting dari tabel ini: sejak PowerShell Core 6.0 (2018), PowerShell tidak lagi eksklusif Windows — dan sejak 7.0 (2020), pengembangan berjalan cepat, terbuka, dan lintas platform. Windows PowerShell 5.1 tetap dirawat untuk kompatibilitas, tapi semua fitur baru lahir di 7+.
Ini pembeda terbesar. Di CMD, menyalurkan output berarti mengirim teks mentah — perintah berikutnya harus menebak formatnya. Di PowerShell, pipeline mengirim objek dengan properti terstruktur. Perhatikan perintah Get-Service berikut — betapa ekspresifnya:
Get-Service | Where-Object Status -eq "Running" | Select-Object Name, StartTypeWhere-Object memfilter berdasarkan properti Status, bukan string hasil parsing. Ini membaca seperti bahasa manusia, bukan teka-teki.
PowerShell memperkenalkan konvensi Verb-Noun: semua perintah diberi nama dengan pola KataKerja-KataBenda, misalnya Get-Process, Stop-Service, Set-Content. Begitu kalian tahu polanya, menebak nama perintah yang belum pernah kalian lihat menjadi mungkin. Konsistensi ini tidak dimiliki Batch maupun Bash.
Setiap cmdlet dan nilai di PowerShell adalah objek .NET — artinya seluruh pustaka framework .NET tersedia di dalam script: parsing JSON, kriptografi, networking, file I/O, hingga antarmuka COM dan WMI. Kalian mendapat kekuatan bahasa pemrograman penuh tanpa berpindah tool.
Lewat WinRM (dan SSH di PowerShell 7), satu console bisa mengelola ribuan server dari jarak jauh — menjalankan perintah, mengambil data, mendorong konfigurasi — tanpa login satu per satu. Ini yang membuat otomasi skala enterprise masuk akal.
Sejak 6.0/7.0, PowerShell berjalan di Linux dan macOS, dan memiliki modul untuk Azure, AWS, dan GCP. Satu skill, banyak target — dari Windows Server lokal sampai cloud production.
Pekerjaan manual yang berulang bukan hanya membosankan — ia rentan salah. Otomasi dengan PowerShell membuat tugas identik dieksekusi identik setiap kali: konfigurasi 50 server, laporan harian, audit keamanan. Manusia lupa; script tidak.
| Aspek | CMD/Batch | PowerShell | Python | Bash |
|---|---|---|---|---|
| Paradigma | Teks | Objek .NET | Objek/beragam | Teks |
| Target utama | Windows | Windows + Linux/macOS | Semua platform | Linux/macOS |
| Kekuatan | Sederhana | Administrasi Windows & cloud | Logika/data kompleks | Otomasi sistem Unix |
| Parsing output | Manual, rapuh | Langsung properti objek | Manual | Manual |
| Fitur bahasa | Minim | Lengkap (class, fungsi) | Sangat lengkap | Cukup |
Aturan praktis: gunakan PowerShell untuk pekerjaan yang "bernyawa Windows" — service, AD, registry, Azure, file sistem — dan untuk pipeline otomasi yang membutuhkan konsistensi. Python lebih cocok untuk analisis data dan logika bisnis kompleks. Bash unggul di dunia Unix yang sudah matang. Ketiganya bisa berdampingan — tapi untuk administrasi Windows, PowerShell adalah bahasa pertama, bukan pelengkap.
New-ADUser dan kawan-kawan.Pada episode 1 ini kita telah memahami bahwa PowerShell adalah jawaban atas puluhan tahun problem administrasi Windows: Batch dan VBScript yang text-centric dan rapuh, WMI yang kaya data tapi rumit, hingga lahirnya Monad (2006) yang memperkenalkan pipeline berbasis objek. Kita juga menelusuri evolusi versi dari 1.0 hingga 7.0 yang cross-platform, alasan mengapa dunia membutuhkannya — objek, konsistensi, .NET, remoting, cloud, dan otomasi skala besar — serta posisinya melawan CMD, Python, dan Bash.
Inti yang harus kalian bawa:
Sekarang kalian tahu mengapa PowerShell ada. Di episode 2 selanjutnya kita langsung praktik: PowerShell fundamentals & console basics — membedah powershell.exe vs pwsh.exe, struktur cmdlet, bagaimana membaca bantuan dengan Get-Help, mengeksplorasi perintah dengan Get-Command, hingga memahami execution policy. Sampai jumpa di episode 2!