Otomasi administrasi Active Directory dengan PowerShell: modul ActiveDirectory, Get-ADUser dan Set-ADUser, pencarian dengan filter, manajemen status akun, penemuan domain controller, hingga pembuatan ratusan user sekaligus dari file CSV.

Di episode 7 kalian membuat user, group, dan OU satu per satu lewat konsol ADUC — dan mungkin kalian sudah merasakan betapa melelahkannya itu saat jumlahnya puluhan. Episode 8 ini membuka senjata sebenarnya: PowerShell untuk Active Directory. Dengan modul ActiveDirectory, pekerjaan yang butuh satu jam lewat GUI selesai dalam hitungan detik — dan yang lebih penting, bisa diulang dengan hasil yang identik setiap kali.
Kita akan membahas: cara memasang dan memuat modul, cmdlet baca-tulis seperti Get-ADUser dan Set-ADUser, teknik filter dan pencarian, manajemen status akun, penemuan komputer, group, dan domain controller, hingga studi kasus nyata membuat ratusan user dari satu file CSV dengan script yang aman.
Cmdlet AD berada di modul ActiveDirectory, yang datang bersama fitur RSAT-AD-PowerShell:
Install-WindowsFeature RSAT-AD-PowerShell
Import-Module ActiveDirectoryDi Windows Server dengan role AD DS, modul ini sudah terpasang secara otomatis. Untuk memastikan semua cmdlet tersedia:
Get-Command -Module ActiveDirectory | Measure-ObjectAda ratusan cmdlet, tapi kalian hanya perlu menguasai beberapa lusin yang paling sering dipakai. Kekuatan PowerShell AD bukan pada jumlahnya, melainkan pada pipeline-nya: output satu cmdlet bisa langsung disaring, diubah, atau disalurkan ke cmdlet lain.
Cmdlet paling dasar adalah Get-ADUser:
Get-ADUser -Identity budi.santoso -Properties Department, Title, LastLogonDate
Get-ADUser -Filter * -SearchBase "OU=Karyawan,DC=ad,DC=example,DC=com"Perhatikan dua hal. Pertama, -Properties diperlukan untuk membaca atribut yang tidak dibawa oleh query default — tanpa itu, atribut seperti Department akan tampil kosong. Kedua, -SearchBase membatasi pencarian pada satu OU, mencegah hasil membludak di domain besar. Jangan biasakan -Filter * tanpa batasan di produksi — di direktori dengan ratusan ribu objek, query seperti itu membebani DC.
Parameter -Filter menggunakan sintaks khusus modul AD, bukan sintaks PowerShell biasa:
Get-ADUser -Filter 'Name -like "Budi*"' -Properties LastLogonDate
Get-ADUser -Filter 'Enabled -eq $true' | Select-Object Name, SamAccountNameUntuk query yang lebih presisi, gunakan -LDAPFilter dengan sintaks LDAP asli — misalnya (&(objectClass=user)(department=IT)). Aturan penting: lakukan filter secepat mungkin di sisi direktori (parameter -Filter atau -LDAPFilter) daripada mengambil semua objek lalu menyaringnya di PowerShell dengan Where-Object. DC punya indeks untuk atribut umum; memanfaatkannya jauh lebih efisien.
Mengubah atribut dilakukan dengan Set-ADUser:
Set-ADUser -Identity budi.santoso -Department "IT" -Title "System Administrator"
Set-ADUser -Identity budi.santoso -Add @{extensionAttribute5="KaryawanKontrak"}Parameter -Add menambah nilai pada atribut multivalue, -Replace mengganti nilai, dan -Clear mengosongkannya. Kombinasi Get-ADUser dengan filter di pipeline ke Set-ADUser adalah pola otomasi paling ampuh — misalnya mengganti departemen seratus user sekaligus dengan satu perintah.
Siklus hidup akun ditangani cmdlet khusus:
Disable-ADAccount -Identity budi.santoso
Enable-ADAccount -Identity budi.santoso
Unlock-ADAccount -Identity budi.santosoReset password dengan Set-ADAccountPassword:
Set-ADAccountPassword -Identity budi.santoso -Reset -NewPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)Perhatikan bahwa cmdlet status menggunakan pola yang konsisten: Enable, Disable, Unlock. Ini sejalan dengan filosofi Verb-Noun PowerShell — begitu kalian tahu satu, sisanya bisa ditebak.
Get-ADComputer menemukan objek komputer:
Get-ADComputer -Filter 'OperatingSystem -like "Windows 11*"' -Properties OperatingSystem
Get-ADComputer -Identity PC-001 | Select-Object Name, Enabled, LastLogonDateIni sangat berguna untuk audit: daftar semua komputer yang belum aktif selama 90 hari bisa menjadi pemicu pembersihan. Untuk group:
Get-ADGroup -Filter * | Select-Object Name, GroupScope, GroupCategory
Get-ADGroupMember -Identity "Domain Admins" | Select-Object Name, ObjectClassDalam troubleshooting, kalian sering perlu tahu DC mana yang sedang melayani domain:
Get-ADDomainController -Filter * | Select-Object Name, Site, IPv4Address
Get-ADDomainController -Discover -Service GlobalCatalogPerintah pertama menampilkan semua DC; perintah kedua meniru proses yang sama dengan yang dilakukan klien saat mencari GC terdekat. Ini alat debugging yang luar biasa untuk masalah "kenapa login lambat di lokasi tertentu" — jawabannya sering karena DC yang dituju jauh.
Sekarang mari terapkan semuanya. Kita akan membuat banyak user dari satu file CSV. Struktur filenya:
Username,NamaDepan,NamaBelakang,Password
budi.santoso,Budi,Santoso,P@ssw0rd
siti.rahayu,Siti,Rahayu,P@ssw0rd
eko.prasetyo,Eko,Prasetyo,P@ssw0rdScript importnya:
$users = Import-Csv -Path "C:\users.csv"
foreach ($u in $users) {
$securePassword = ConvertTo-SecureString -String $u.Password -AsPlainText -Force
try {
New-ADUser `
-Name "$($u.NamaDepan) $($u.NamaBelakang)" `
-GivenName $u.NamaDepan `
-Surname $u.NamaBelakang `
-SamAccountName $u.Username `
-UserPrincipalName "$($u.Username)@ad.example.com" `
-Path "OU=Karyawan,DC=ad,DC=example,DC=com" `
-AccountPassword $securePassword `
-Enabled $true
Write-Host "OK: $($u.Username)" -ForegroundColor Green
} catch {
Write-Host "GAGAL: $($u.Username)" -ForegroundColor Red
}
}Pola yang bisa kalian tiru: Import-Csv membaca baris menjadi objek, foreach mengulang setiap baris, dan try-catch memastikan satu kegagalan (misalnya username duplikat) tidak menghentikan seluruh proses. Hasilnya, seratus user dibuat dalam satu perintah — pekerjaan yang lewat GUI bisa menghabiskan berjam-jam.
Beberapa pola yang akan kalian pakai terus:
@nama. Membuat script panjang jadi terbaca.Get-ADUser dan Set-ADUser untuk perubahan massal tanpa loop.Important
Script AD berjalan dengan identitas kalian — kesalahan kecil bisa berdampak besar ke seluruh domain. Selalu uji dengan parameter -WhatIf terlebih dahulu untuk melihat apa yang akan dilakukan tanpa benar-benar melakukannya, dan jalankan script pada satu objek uji sebelum diterapkan ke ratusan objek.
Episode 8 ini mengubah kalian dari admin klik-dan-isi menjadi admin yang mengotomasi: memasang dan memuat modul ActiveDirectory, membaca akun dengan Get-ADUser, mengubah atribut dengan Set-ADUser, mengelola status akun, menemukan komputer dan group, menelusuri domain controller, hingga membuat ratusan user dari CSV dengan script yang tangguh.
Inti yang harus dibawa pulang:
-Properties wajib untuk membaca atribut yang tidak default.Import-Csv + foreach + try-catch adalah jantung bulk operation.-WhatIf adalah teman terbaik sebelum perubahan massal.Sekarang kalian bisa mengelola objek dalam skala besar. Tapi mengelola objek saja belum cukup — bagaimana mengatur perilaku semua mesin dan user secara terpusat? Di episode 9 kita masuk ke jantung administrasi Windows: Group Policy Fundamentals. Sampai jumpa di episode 9!