Belajar PowerShell - Active Directory Management
Episode 18 of 31

Belajar PowerShell - Active Directory Management

Mengelola Active Directory lewat GUI terasa cepat untuk satu user, tapi runtuh ketika harus berurusan dengan ratusan akun. Episode ini membedah modul ActiveDirectory: user, group, computer, dan OU — dari operasi tunggal hingga pembuatan user massal lewat CSV dan pelaporan otomatis.

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

Pendahuluan

Di episode 17 kita membedah COM objects dan integrasi .NET — kemampuan PowerShell memanggil komponen eksternal dan memanfaatkan pustaka .NET langsung dari konsol. Fondasi itulah yang membuat PowerShell bukan sekadar bahasa scripting, melainkan "pengontrol seluruh Windows". Sekarang kita naik satu level ke domain yang lebih strategis: Active Directory (AD).

AD adalah buku telepon sekaligus kartu identitas seluruh organisasi: siapa saja usernya, masuk ke group apa, komputer mana yang terdaftar, dan di unit organisasi mana mereka bernaung. Dengan 500 karyawan, mengelola akun satu per satu lewat GUI — klik, isi form, klik lagi — bukan hanya lambat, itu resep ketidakkonsistenan dan celah keamanan. Episode ini mengajarkan cara administrator sejati mengelola AD: cepat, akurat, dan bisa diulang kapan saja.

Mengapa PowerShell untuk AD?

  1. Bulk operation. Membuat, mereset password, atau menonaktifkan 300 akun cukup dengan satu perintah dan satu daftar nama.
  2. Konsistensi. Skrip yang sama menghasilkan output yang sama — tidak ada variasi "lupa centang kotak".
  3. Audit trail. Setiap perintah bisa dicatat. Siapa melakukan apa, kapan, dengan skrip apa.

Modul yang kalian butuhkan bernama ActiveDirectory. Semua cmdlet-nya mengikuti pola Verb-Noun secara ketat: Get-ADUser, New-ADUser, Set-ADUser, Remove-ADUser, dan seterusnya. Kuasai satu keluarga cmdlet, keluarga lainnya tinggal menyesuaikan nama objeknya.

Persiapan: RSAT dan Modul ActiveDirectory

Modul ActiveDirectory tidak tersedia di Windows client secara default; kalian perlu RSAT (Remote Server Administration Tools). Di Windows Server dengan peran AD DS modul sudah terpasang; di Windows 10/11 Pro atau Enterprise aktifkan RSAT lewat Fitur Opsional, lalu jalankan Import-Module ActiveDirectory. Verifikasi modulnya:

Memverifikasi modul ActiveDirectory
Get-Command -Module ActiveDirectory | Select-Object -First 10 Name, CommandType
Get-Module -ListAvailable ActiveDirectory

Menghubungkan ke Domain Controller

Modul menemukan Domain Controller (DC) terdekat secara otomatis. Untuk memastikan DC yang sedang dipakai — atau menyasar DC tertentu — pakai Get-ADDomainController dan parameter -Server:

Melihat DC dan menyasar DC tertentu
Get-ADDomainController -Filter * | Select-Object Name, Site, Domain
Get-ADUser -Identity "jsantoso" -Server "dc01.corp.local"

Tip

Sebelum menguji cmdlet AD apa pun, pastikan tiga hal: akun kalian punya hak administratif di domain, komputer terhubung ke jaringan domain, dan waktu sistem sinkron dengan DC. Kesalahan autentikasi Kerberos yang misterius hampir selalu berakar dari ketiga hal itu.

Manajemen User

Membaca Data User

Cmdlet paling sering dipakai dalam keluarga ini adalah Get-ADUser. Secara default ia hanya mengembalikan atribut dasar; tambahkan -Properties untuk atribut yang lebih dalam:

Membaca data user
Get-ADUser -Filter "Enabled -eq 'true'" -SearchBase "OU=Karyawan,DC=corp,DC=local" -Properties LastLogonDate, PasswordLastSet |
    Select-Object SamAccountName, DisplayName, Enabled, LastLogonDate

Pola -Filter "Enabled -eq 'true'" jauh lebih cepat daripada mengambil semua user lalu menyaring di pipeline — AD menyaring di sisi server, bukan di sisi klien.

Membuat User Baru

New-ADUser membuat akun. Pola yang wajib diingat: password harus dikonversi dulu menjadi SecureString dengan ConvertTo-SecureString:

Membuat user baru
$secure = ConvertTo-SecureString "S3cureP@ss2026" -AsPlainText -Force
 
New-ADUser -Name "Joko Santoso" `
    -SamAccountName "jsantoso" `
    -GivenName "Joko" `
    -Surname "Santoso" `
    -UserPrincipalName "jsantoso@corp.local" `
    -Path "OU=Karyawan,DC=corp,DC=local" `
    -AccountPassword $secure `
    -Enabled $true

Memperbarui, Mengaktifkan, dan Menonaktifkan

Set-ADUser mengubah atribut; Enable-ADAccount dan Disable-ADAccount mengatur status akun:

Memperbarui atribut dan status akun
Set-ADUser -Identity "jsantoso" -Department "IT" -Title "Network Engineer"
Disable-ADAccount -Identity "jsantoso"
Enable-ADAccount -Identity "jsantoso"

Reset Password dan Membuka Kunci Akun

User lupa password dan akun terkunci karena salah password berulang kali adalah tugas harian helpdesk:

Reset password dan buka kunci akun
$secure = ConvertTo-SecureString "P@sswordBaru2026" -AsPlainText -Force
 
Set-ADAccountPassword -Identity "jsantoso" -NewPassword $secure -Reset
Set-ADUser -Identity "jsantoso" -ChangePasswordAtLogon $true
Unlock-ADAccount -Identity "jsantoso"

-ChangePasswordAtLogon memaksa user mengganti password saat login berikutnya — wajib dipakai setiap kali kalian reset password orang lain.

Menghapus User

Remove-ADUser menghapus akun dari direktori:

Menghapus user (dengan konfirmasi)
Remove-ADUser -Identity "jsantoso" -Confirm:$true

Penghapusan di AD bersifat permanen. Disiplin tim yang baik: nonaktifkan dulu (misalnya 30 hari), lalu hapus setelah masa tunggu lewat — akun masih bisa dikembalikan jika ternyata masih dibutuhkan.

Important

Sebelum penghapusan massal, selalu cek dulu apa yang akan dihapus: jalankan Get-ADUser dengan filter yang sama, simpan hasilnya ke file, lalu gunakan daftar itu sebagai referensi. Di AD, perintah "hancurkan semua" jauh lebih murah dijalankan daripada diperbaiki.

Manajemen Group

Group adalah cara AD mengatur izin secara kolektif: alih-alih memberi akses ke 50 user satu per satu, buat satu group, masukkan 50 user ke dalamnya, lalu beri akses ke group itu:

Membuat group dan mengelola keanggotaan
New-ADGroup -Name "IT-Support" -GroupScope Global -Path "OU=Grup,DC=corp,DC=local"
 
Add-ADGroupMember -Identity "IT-Support" -Members "jsantoso","dwilestari","ahmadf"
Get-ADGroupMember -Identity "IT-Support" | Select-Object Name, SamAccountName
Remove-ADGroupMember -Identity "IT-Support" -Members "dwilestari" -Confirm:$false

Add-ADGroupMember dan Remove-ADGroupMember menerima daftar anggota; Get-ADGroupMember membaca isi group; Get-ADGroup mencari group berdasarkan filter.

Manajemen Computer dan OU

Computer

Akun komputer sama pentingnya dengan akun user — setiap perangkat yang bergabung ke domain punya satu:

Membaca, membuat, dan menghapus akun computer
Get-ADComputer -Filter * -Properties OperatingSystem, LastLogonDate |
    Select-Object Name, OperatingSystem, LastLogonDate
 
New-ADComputer -Name "WS-021" -Path "OU=Workstation,DC=corp,DC=local"
Set-ADComputer -Identity "WS-021" -Description "Workstation Divisi HRD"
Remove-ADComputer -Identity "WS-021" -Confirm:$false

Organizational Unit

OU adalah "folder" AD untuk menata objek sekaligus batas pendelegasian izin:

Membuat dan mengelola OU
New-ADOrganizationalUnit -Name "Marketing" -Path "DC=corp,DC=local" -ProtectedFromAccidentalDeletion $true
Get-ADOrganizationalUnit -Filter * | Select-Object Name, DistinguishedName
Set-ADOrganizationalUnit -Identity "OU=Marketing,DC=corp,DC=local" -Description "Divisi Pemasaran"

-ProtectedFromAccidentalDeletion $true adalah pelindung bawaan agar OU (dan seluruh isinya) tidak terhapus tanpa disengaja — biasakan selalu menyalakannya.

Operasi Massal dari CSV

Inilah momen di mana PowerShell benar-benar mengalahkan GUI. Misalkan HRD mengirimkan file users.csv berisi daftar karyawan baru.

Membuat Banyak User Sekaligus

Bulk create user dari CSV
$users = Import-Csv -Path "C:\Data\users.csv"
 
foreach ($u in $users) {
    $secure = ConvertTo-SecureString $u.Password -AsPlainText -Force
 
    New-ADUser -Name ($u.NamaDepan + " " + $u.NamaBelakang) `
        -GivenName $u.NamaDepan `
        -Surname $u.NamaBelakang `
        -SamAccountName $u.Username `
        -UserPrincipalName ($u.Username + "@corp.local") `
        -Path "OU=Karyawan,DC=corp,DC=local" `
        -AccountPassword $secure `
        -Enabled $true
}

Import-Csv mengubah setiap baris file menjadi objek; kolom Username, NamaDepan, NamaBelakang, dan Password diakses sebagai $u.Username dan seterusnya.

Reset Password Massal

Semua akun yang berumur di atas 90 hari direset dan dipaksa ganti password saat login:

Reset password massal
$list = Get-Content -Path "C:\Data\username.txt"
$secure = ConvertTo-SecureString "Reset#2026" -AsPlainText -Force
 
foreach ($user in $list) {
    Set-ADAccountPassword -Identity $user -NewPassword $secure -Reset
    Set-ADUser -Identity $user -ChangePasswordAtLogon $true
}

Pelaporan Otomatis

Dengan satu pipeline, kalian menghasilkan laporan yang siap dikirim ke manajemen:

Laporan status user ke CSV
Get-ADUser -Filter * -Properties LastLogonDate, PasswordLastSet |
    Select-Object SamAccountName, DisplayName, Enabled, LastLogonDate, PasswordLastSet |
    Export-Csv -Path "C:\Data\report-user.csv" -NoTypeInformation -Encoding UTF8

Keamanan dan Praktik Terbaik

  1. Jangan pernah menaruh password mentah di skrip yang disimpan. Ambil dari prompt (Get-Credential), vault, atau file enkripsi terbatas — dibahas mendalam di episode 22.
  2. Uji dengan -WhatIf dulu. Hampir semua cmdlet AD mendukung -WhatIf untuk memperlihatkan hasil tanpa benar-benar menjalankannya.
  3. Kerjakan di OU percobaan. Buat OU khusus "Uji Coba", jalankan semua skrip di sana, verifikasi hasilnya, baru terapkan ke produksi.
  4. Catat setiap operasi massal. Simpan daftar input, output, dan timestamp ke log.

Warning

Cmdlet AD berjalan dengan kredensial sesi PowerShell kalian saat ini. Jika akun login bukan admin domain, perintah akan gagal — atau lebih buruk, berhasil sebagian. Gunakan Run as Administrator dan pastikan akun punya hak yang memang diperlukan, bukan hak berlebihan.

Penutup

Di episode 18 ini kalian telah menguasai pengelolaan Active Directory lewat PowerShell: persiapan RSAT dan modul ActiveDirectory, koneksi ke Domain Controller, manajemen user (Get-ADUser, New-ADUser, Set-ADUser, Remove-ADUser, Enable-ADAccount, Disable-ADAccount, Set-ADAccountPassword, Unlock-ADAccount), group (Get-ADGroup, New-ADGroup, Add-ADGroupMember, Remove-ADGroupMember, Get-ADGroupMember), computer dan OU, serta operasi massal dari CSV: pembuatan user massal, reset password massal, dan pelaporan otomatis.

Poin kunci yang harus kalian bawa:

  • Semua cmdlet AD mengikuti pola Verb-Noun — kuasai satu keluarga, kuasai semuanya.
  • -Filter di sisi server jauh lebih cepat daripada menyaring hasil di pipeline.
  • Selalu konversi password ke SecureString sebelum dipakai cmdlet AD.
  • -WhatIf, OU uji coba, dan backup daftar input adalah sabuk pengaman kalian.

Kalian kini bisa mengelola identitas organisasi dari konsol. Pertanyaan berikutnya: bagaimana kalian mengelola konfigurasi mesin itu sendiri? Di episode 19 selanjutnya kita akan membedah Registry Management: memandang registry Windows sebagai filesystem, membaca dan menulis nilai lewat Get-ItemProperty dan Set-ItemProperty, membuat key dengan New-Item, hingga backup dan manipulasi registry dari jarak jauh. Sampai jumpa!

Belajar PowerShell - Active Directory Management | Belajar PowerShell