PowerShell
PowerShell adalah command-line shell dan scripting language yang dikembangkan oleh Microsoft. Dibangun di atas .NET framework, PowerShell dirancang khusus untuk administrasi sistem Windows, otomatisasi tugas, dan manajemen konfigurasi. PowerShell versi terbaru (PowerShell 7+) bersifat cross-platform dan berjalan di Windows, Linux, dan macOS.
Cmdlets vs Commands
Cmdlet (dibaca "command-let") adalah perintah PowerShell bawaan yang mengikuti pola Verb-Noun. Contoh umum:
Get-Service- Mendapatkan daftar layananSet-ExecutionPolicy- Mengatur kebijakan eksekusiNew-ADUser- Membuat pengguna Active DirectoryRemove-Item- Menghapus file atau folder
Cmdlet berbeda dari perintah tradisional (seperti dir,
copy, ping) karena cmdlet mengembalikan
objek (bukan teks). Ini memungkinkan manipulasi
data yang lebih kaya dan piping yang lebih canggih.
PowerShell juga mendukung alias agar pengguna CLI tradisional merasa
nyaman, misalnya dir (alias untuk
Get-ChildItem), cd
(Set-Location), dan cls
(Clear-Host).
Pipeline
Pipeline (|) adalah fitur paling kuat
di PowerShell. Berbeda dengan pipeline di shell Unix/Linux yang
melewatkan teks, pipeline PowerShell melewatkan objek
.NET. Contoh:
Get-Service | Where-Object { $_.Status -eq 'Running' } | Select-Object Name, DisplayName
Perintah di atas:
Get-Servicemengembalikan objek layananWhere-Objectmemfilter hanya layanan yang berstatus RunningSelect-Objectmemilih properti Name dan DisplayName saja
Pipeline memungkinkan komposisi perintah yang sangat ekspresif tanpa perlu parsing teks manual.
Modules
Module adalah paket yang berisi cmdlet, function, variable, dan resource lainnya. PowerShell menyertakan modul bawaan dan juga mendukung modul dari komunitas (PowerShell Gallery).
Modul umum untuk administrasi Windows:
| Modul | Kegunaan |
|---|---|
ActiveDirectory |
Mengelola AD DS (user, group, computer, OU) |
Microsoft.PowerShell.Management |
Manajemen sistem umum (services, processes, registry) |
NetAdapter |
Mengelola adapter jaringan |
Hyper-V |
Mengelola Hyper-V VM |
PSReadLine |
Peningkatan command-line editing |
Untuk menginstal modul dari PowerShell Gallery:
Install-Module -Name NamaModul
Scripting: Variables, Loops, Functions
Variables
Variable di PowerShell diawali dengan $:
$nama = "Administrator"
$jumlah = 42
$hasil = Get-Service
Loops
# ForEach
$services = Get-Service
foreach ($svc in $services) {
Write-Output "Service: $($svc.Name) - $($svc.Status)"
}
# For loop
for ($i = 0; $i -lt 10; $i++) {
Write-Output "Iterasi ke-$i"
}
# While
$count = 0
while ($count -lt 5) {
$count++
Write-Output $count
}
Functions
function Get-SystemInfo {
param(
[string]$ComputerName = "localhost"
)
$os = Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $ComputerName
$disk = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DeviceID='C:'" -ComputerName $ComputerName
return [PSCustomObject]@{
ComputerName = $ComputerName
OSName = $os.Caption
OSVersion = $os.Version
FreeSpaceGB = [math]::Round($disk.FreeSpace / 1GB, 2)
}
}
Remoting: WinRM dan Enter-PSSession
PowerShell Remoting menggunakan WinRM (Windows Remote Management) sebagai protokol transport. WinRM berjalan di port 5985 (HTTP) dan 5986 (HTTPS).
- Enter-PSSession - Membuka sesi
interaktif jarak jauh (mirip SSH):
Enter-PSSession -ComputerName Server01
- Invoke-Command - Menjalankan perintah
di satu atau banyak server:
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock { Get-Service }
Untuk mengaktifkan PowerShell Remoting:
Enable-PSRemoting -Force
Active Directory Module
Modul ActiveDirectory menyediakan cmdlet untuk mengelola AD DS. Contoh penggunaan:
Import-Module ActiveDirectory
# Mendapatkan user
Get-ADUser -Identity "jsmith" -Properties Department, Title
# Membuat user baru
New-ADUser -Name "John Smith" -GivenName John -Surname Smith `
-SamAccountName jsmith -UserPrincipalName [email protected] `
-Path "OU=Users,DC=domain,DC=local" -AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) -Enabled $true
# Mendapatkan semua komputer dalam OU tertentu
Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=domain,DC=local"
File System Provider
Provider di PowerShell memungkinkan akses ke berbagai data store seolah-olah itu adalah file system. FileSystem Provider adalah yang paling umum digunakan:
# Navigasi
Set-Location C:\Windows\System32
# Membaca file
Get-Content C:\Logs\app.log -Tail 50
# Menulis file
"Hello, World!" | Out-File C:\Temp\test.txt
Set-Content C:\Temp\test.txt "Isi baru"
# Registry sebagai drive
Set-Location HKLM:\Software\Microsoft\Windows\CurrentVersion
Get-ChildItem
Provider lain: Registry (HKLM:, HKCU:),
Certificate (Cert:), Environment (Env:),
Variable (Variable:), Function
(Function:).
Execution Policy
Execution Policy adalah fitur keamanan yang mengontrol bagaimana PowerShell memuat dan menjalankan konfigurasi dan script. Bukan security boundary (dapat dilewati), tetapi berguna mencegah eksekusi script yang tidak sengaja.
| Policy | Deskripsi |
|---|---|
Restricted |
Tidak ada script yang boleh dijalankan (default di Windows) |
AllSigned |
Hanya script yang ditandatangani oleh trusted publisher |
RemoteSigned |
Script lokal boleh, script dari internet harus ditandatangani |
Unrestricted |
Semua script boleh berjalan (tanpa pembatasan) |
Bypass |
Tidak ada pembatasan (untuk otomatisasi dan skrip build) |
Melihat dan mengubah execution policy:
Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
Kesimpulan: PowerShell adalah alat yang sangat esensial bagi administrator Windows. Dengan pemahaman tentang cmdlet, pipeline, scripting, remoting, modul AD, dan execution policy, administrator dapat mengotomatiskan hampir semua aspek administrasi sistem Windows secara efisien.