Belajar PowerShell - Registry Management
Episode 19 of 31

Belajar PowerShell - Registry Management

Registry adalah database konfigurasi Windows yang penuh nilai tersembunyi. Episode ini mengubahnya menjadi filesystem yang bisa dieksplorasi PowerShell: membaca dan menulis nilai, membuat key, backup, serta mengelola registry mesin remote dengan aman.

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

Pendahuluan

Di episode 18 kalian mengelola Active Directory — pusat identitas organisasi. Namun setiap mesin Windows juga punya pusat konfigurasi lokalnya sendiri yang tak kalah penting: registry. Jika AD adalah buku telepon organisasi, registry adalah "lemari arsip pribadi" setiap mesin — tempat Windows dan aplikasi menyimpan pengaturan. Registry terkenal misterius: pohon key bertingkat, tipe nilai aneh seperti DWord dan REG_SZ, dan kesalahan kecil bisa membuat aplikasi — bahkan Windows — tidak bisa boot.

Di episode ini kita mencabut tabir itu dengan cara paling elegan yang disediakan PowerShell: memperlakukan registry sebagai filesystem. Di PowerShell, HKLM: bukan sekadar drive virtual — ia adalah pintu masuk ke seluruh struktur registry dengan perintah yang sama persis seperti menjelajah folder.

Registry Sebagai Filesystem

Sejak episode-episode awal kalian sudah familiar dengan Get-ChildItem untuk menjelajah folder. Kabar baiknya: registry adalah folder. PowerShell menyediakan dua drive provider untuk registry:

DriveIsiAnalogi
HKLM:HKEY_LOCAL_MACHINE — konfigurasi mesin (global)Rak arsip gedung: semua penghuni memakainya
HKCU:HKEY_CURRENT_USER — konfigurasi user yang sedang loginLaci pribadi di meja kalian

Cek drive yang tersedia dan mulai menjelajah:

Menjelajah registry sebagai filesystem
Get-PSDrive -PSProvider Registry
 
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion" |
    Select-Object Name, SubKeyCount, ValueCount

Perhatikan strukturnya: key (mirip folder) dan value (mirip file). Satu key bisa berisi sub-key dan beberapa nilai. Inilah alasan kenapa PowerShell menyebutnya registry provider — seluruh operasi filesystem bekerja, ditambah cmdlet khusus untuk nilai.

Tip

Jelajah registry seperti menjelajah folder biasa: gunakan cd HKLM:\SOFTWARE untuk pindah, lalu dir alias Get-ChildItem untuk melihat isinya. Semua teknik navigasi yang kalian kuasai untuk filesystem langsung berlaku — itulah keunggulan desain provider PowerShell.

Membaca Registry

Membaca Nilai dengan Get-ItemProperty

Cmdlet utama untuk membaca nilai adalah Get-ItemProperty. Bedanya dengan Get-ChildItem: yang pertama menampilkan nilai milik sebuah key, sedangkan yang kedua menampilkan sub-key:

Membaca nilai sebuah key
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion" -Name "ProgramFilesDir"
 
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion" -Name "ProgramFilesDir" |
    Select-Object -ExpandProperty ProgramFilesDir

Baris kedua memakai Select-Object -ExpandProperty untuk mengeluarkan hanya nilainya — bukan objek dengan metadata. Ini pola yang sering kalian butuhkan saat nilai registry dipakai sebagai input perintah lain.

Menjelajah Key

Untuk daftar sub-key, pakai Get-ChildItem:

Daftar sub-key di bawah sebuah key
Get-ChildItem -Path "HKLM:\SOFTWARE" | Select-Object Name
 
Get-ChildItem -Path "HKCU:\Software" -Recurse -Depth 2 |
    Select-Object -First 20 FullName

Perhatikan: -Recurse pada root HKLM: tanpa -Depth berjalan sangat lama karena pohonnya sangat dalam. Batasi dengan -Depth atau mulai dari key yang spesifik.

Membuat Key dan Nilai Baru

New-Item membuat key; New-ItemProperty membuat nilai di dalamnya:

Membuat key dan nilai baru
New-Item -Path "HKCU:\Software\MyApp" -Force
 
New-ItemProperty -Path "HKCU:\Software\MyApp" `
    -Name "Version" `
    -Value "1.0" `
    -PropertyType String

Tipe nilai yang paling umum:

PropertyTypeTipe RegistryPemakaian
StringREG_SZTeks biasa (path, nama)
ExpandStringREG_EXPAND_SZTeks dengan variabel lingkungan
DWordREG_DWORDAngka 32-bit (flags, port)
QWordREG_QWORDAngka 64-bit
BinaryREG_BINARYData mentah biner

Pilihan -PropertyType yang tepat penting: aplikasi membaca tipe ini untuk memutuskan cara menafsirkan nilai. Nilai DWord yang dibuat sebagai String akan disalahartikan.

Mengubah Nilai yang Sudah Ada

Set-ItemProperty mengubah nilai yang sudah ada tanpa harus membuat ulang:

Mengubah nilai yang sudah ada
Set-ItemProperty -Path "HKCU:\Software\MyApp" -Name "Version" -Value "1.1"
Set-ItemProperty -Path "HKCU:\Software\MyApp" -Name "AutoStart" -Value 1 -PropertyType DWord

Perhatikan nilai 1 untuk DWord — tipe angka, tanpa tanda kutip; ini menyetel flag "auto start aktif".

Menghapus Nilai

Remove-ItemProperty menghapus nilai; Remove-Item menghapus key beserta isinya:

Menghapus nilai dan key
Remove-ItemProperty -Path "HKCU:\Software\MyApp" -Name "Version"
Remove-Item -Path "HKCU:\Software\MyApp" -Confirm:$true

Tugas Umum

Membaca dan Mengubah Nilai secara Terprogram

Pola paling umum di dunia nyata: baca nilai, bandingkan, ubah jika berbeda. Contoh: cek versi build Windows sebelum menjalankan skrip yang bergantung pada versi tertentu:

Membaca versi Windows dari registry
$currentBuild = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "CurrentBuildNumber").CurrentBuildNumber
 
if ($currentBuild -ge 22000) {
    Write-Output "Windows 11 atau lebih baru: build $currentBuild"
} else {
    Write-Output "Windows 10 atau lebih lama: build $currentBuild"
}

Backup Registry

Aturan emas sebelum menyentuh registry: backup dulu. PowerShell memanfaatkan reg export klasik untuk menyimpan snapshot key ke file .reg:

Backup sebuah key registry
$stamp = Get-Date -Format "yyyyMMdd_HHmmss"
$backupFile = "C:\Backup\MyApp_$stamp.reg"
 
reg export "HKCU\Software\MyApp" $backupFile
Write-Output "Backup tersimpan di $backupFile"

Jika terjadi kesalahan, kalian tinggal reg import file tersebut untuk memulihkan kondisi semula. Untuk key kecil, simpan juga daftar nilainya ke CSV sebagai dokumentasi:

Dokumentasi nilai key ke CSV
Get-ItemProperty -Path "HKCU:\Software\MyApp" |
    ConvertTo-Json | Out-File "C:\Backup\MyApp_values.json"

Registry Mesin Remote

Untuk mengelola registry mesin lain, PowerShell Remoting (yang dibahas di episode 16) adalah jalurnya — setiap mesin tujuan harus mengaktifkan WinRM:

Membaca registry mesin remote
Invoke-Command -ComputerName "server-01" -ScriptBlock {
    Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion" -Name "ProgramFilesDir"
}

Skrip di dalam -ScriptBlock dijalankan di mesin tujuan, sehingga path HKLM: merujuk ke registry server tersebut — bukan mesin lokal. Ini cara mengecek konfigurasi ratusan server tanpa login satu per satu.

Warning

Hampir semua aplikasi membaca registry hanya saat startup. Mengubah nilai registry sering tidak langsung berlaku sampai aplikasi (atau Windows) di-restart. Jangan heran jika perubahan tidak terlihat seketika — dan jangan menulis ulang nilai yang sama berulang kali hanya karena "tidak berubah".

Praktik Terbaik

Registry adalah tempat paling tidak memaafkan di Windows. Empat kebiasaan yang harus kalian internalisasi:

  1. Backup sebelum menulis. reg export satu baris lebih murah daripada memulihkan mesin yang tidak bisa boot.
  2. Uji di mesin percobaan dulu. Kembangkan dan verifikasi skrip registry di mesin uji yang identik versi Windows-nya dengan produksi — struktur registry bisa berbeda antar versi.
  3. Dokumentasikan perubahan. Catat key yang diubah, nilai lama, nilai baru, dan alasannya. Tim kalian (dan kalian sendiri enam bulan lagi) akan berterima kasih.
  4. Tangani error dengan eksplisit. Key yang tidak ada akan melempar error. Bungkus operasi tulis dengan blok try-catch:
Membungkus operasi tulis dengan error handling
try {
    Set-ItemProperty -Path "HKCU:\Software\MyApp" `
        -Name "Version" -Value "1.2" -ErrorAction Stop
    Write-Output "Nilai berhasil diubah"
} catch {
    Write-Output "Gagal mengubah registry: $($_.Exception.Message)"
}

-ErrorAction Stop mengubah error non-terminating menjadi error yang melempar eksepsi, sehingga blok catch benar-benar bekerja. Tanpa itu, skrip akan melanjutkan ke baris berikutnya seolah-olah berhasil.

Important

Hindari menulis langsung ke registry aplikasi pihak ketiga. Konfigurasi yang didukung lewat pengaturan aplikasi atau Group Policy jauh lebih aman dan terdokumentasi. Registry adalah last resort — bukan tempat pertama untuk menaruh pengaturan, melainkan tempat terakhir setelah semua opsi lain habis.

Penutup

Di episode 19 ini kalian telah membuka peti rahasia Windows: registry dilihat sebagai filesystem yang bisa dijelajah. Kalian memahami dua drive provider, HKLM: untuk konfigurasi mesin dan HKCU: untuk konfigurasi user; membaca nilai dengan Get-ItemProperty, key dengan Get-ChildItem; menulis key dan nilai baru dengan New-Item dan New-ItemProperty; mengubah dengan Set-ItemProperty; menghapus dengan Remove-ItemProperty; plus tugas umum seperti backup lewat reg export, dan pengelolaan registry mesin remote lewat Invoke-Command.

Poin kunci yang harus kalian bawa:

  • Registry adalah pohon key dan value — perlakukan sebagai folder dan file.
  • Pilih -PropertyType yang benar; aplikasi membaca tipe ini untuk menafsirkan nilai.
  • Backup sebelum menulis, uji di lingkungan percobaan, dan dokumentasikan perubahan.
  • Operasi tulis selalu bungkus dengan try-catch dan -ErrorAction Stop.

Konfigurasi mesin kini berada di ujung jari kalian. Tapi ada satu jenis pembaruan konfigurasi yang paling berdampak dan paling sering ditunda: patch Windows. Di episode 20 selanjutnya kita akan membahas Windows Updates & Patching: modul PSWindowsUpdate untuk otomasi update, integrasi WSUS untuk organisasi besar, riwayat update dengan Get-Hotfix, hingga verifikasi dan rollback patch. Sampai jumpa!

Belajar PowerShell - Registry Management | Belajar PowerShell