TDCTF Academy Logo TDCTF ACADEMY

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 layanan
  • Set-ExecutionPolicy - Mengatur kebijakan eksekusi
  • New-ADUser - Membuat pengguna Active Directory
  • Remove-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:

  1. Get-Service mengembalikan objek layanan
  2. Where-Object memfilter hanya layanan yang berstatus Running
  3. Select-Object memilih 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.

PADA HALAMAN INI