Windows Server 2025 / PowerShell: objek, pipeline, dan kueri

PowerShell memproses objek, yaitu data dengan properti, bukan sekadar teks yang terlihat di layar. Gabungkan perintah kueri dengan Where-Object, Select-Object, dan Sort-Object untuk menyaring, mengurutkan, dan memilih informasi server memakai kondisi yang jelas.

Kenali konsol dan gunakan bantuan perintah

Buka Windows PowerShell pada server yang ingin diperiksa. Contoh hanya-baca ini ditujukan untuk Windows PowerShell 5.1 di Windows Server 2025; periksa PSVersion dan PSEdition pada hasil pertama untuk mengenali sesi. PowerShell 7 yang dipasang terpisah dapat memiliki kompatibilitas modul berbeda. Perintah memeriksa komputer tempat sesi berjalan: jika dijalankan pada PC pengelolaan, hasilnya berasal dari PC itu. Akun terbatas juga dapat melihat lebih sedikit informasi meskipun perintah tidak mengubah konfigurasi.

$PSVersionTable
Get-Command Get-Service
Get-Help Get-Service -Examples

Get-Command memeriksa ketersediaan Get-Service; Get-Help menjelaskan penggunaan dan parameter, sedangkan -Examples meminta contoh. Jika bantuan lokal tidak lengkap, lihat referensi resmi untuk versi yang sama, jangan menjalankan skrip pembantu unduhan. Nama berpola kata kerja-kata benda memberi petunjuk maksud: Get umumnya membaca dan Set mengonfigurasi, tetapi tetap periksa bantuan perintah yang bersangkutan.

Periksa properti sebelum memproses output

Objek layanan mempunyai properti seperti Name (nama), DisplayName (nama tampilan), dan Status. Gunakan properti tersebut tanpa memotong teks berdasarkan posisi kolom layar. Baris pertama menampilkan paling banyak lima layanan, baris kedua memeriksa anggota tipe objek, dan baris ketiga memilih tiga properti WinRM. Pelajari objek PowerShell beserta propertinya.

Get-Service | Select-Object -First 5
Get-Service | Get-Member
Get-Service -Name WinRM | Select-Object Name,DisplayName,Status

Pada Get-Member, kolom MemberType membedakan properti dari metode: properti berisi data, sedangkan metode dapat menjalankan tindakan. Jangan memanggil metode hanya karena namanya tampak berguna. Pelajaran ini membaca dan menyaring layanan tanpa memulai atau menghentikannya. Periksa bahwa hasil terakhir memuat Name, DisplayName, dan Status untuk WinRM.

Hubungkan perintah melalui pipeline

Tanda vertikal | menghubungkan perintah dalam pipeline PowerShell dan meneruskan objek ke tahap berikutnya. Where-Object memilih layanan dengan Status bernilai Running, Sort-Object mengurutkan berdasarkan Name, dan Select-Object memilih properti keluaran. $_ berarti objek yang sedang diproses:

Get-Service |
    Where-Object { $_.Status -eq 'Running' } |
    Sort-Object Name |
    Select-Object Name,DisplayName,Status

Untuk membandingkan, ubah hanya Running menjadi Stopped, jalankan kembali, amati kumpulan layanan yang berbeda, lalu kembalikan filter ke Running. Mengubah kondisi filter tidak memulai atau menghentikan layanan. -eq membandingkan kesamaan, -ne ketidaksamaan, -gt nilai yang lebih besar, dan -like pola dengan wildcard. Periksa tipe data saat membandingkan angka; urutan teks tidak selalu sama dengan urutan numerik.

Gunakan variabel dan satuan eksplisit

Kueri berikut menyimpan objek drive logis lokal dan menghitung kapasitas serta ruang kosong dalam gibibyte (GiB). Menurut dokumentasi Win32_LogicalDisk, DriveType=3 memilih drive lokal, sedangkan Size dan FreeSpace dinyatakan dalam byte. Konstanta PowerShell 1GB bernilai 1.073.741.824 byte, yaitu satu GiB. Nama kolom menunjukkan satuan biner tersebut:

$labDisks = Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3'
$labDisks | Select-Object DeviceID,
    @{Name='SizeGiB';Expression={[math]::Round($_.Size / 1GB,1)}},
    @{Name='FreeGiB';Expression={[math]::Round($_.FreeSpace / 1GB,1)}}

Hasilnya memuat DeviceID, SizeGiB, dan FreeGiB. DeviceID mengidentifikasi drive, sedangkan dua kolom lainnya menghitung kapasitas total dan ruang kosong yang dibulatkan ke satu angka desimal. Nilai dan jumlah baris bergantung pada drive yang sebenarnya. $labDisks tetap menyimpan objek drive sehingga dapat disaring lagi. Gunakan Format-Table hanya untuk tampilan akhir karena keluarannya berupa objek pemformatan. Jika diletakkan sebelum ekspor CSV (nilai yang dipisahkan koma), struktur format itulah yang diekspor, bukan kolom data yang diinginkan. Untuk ekspor data, pertahankan objek dan pilih propertinya sebelum Export-Csv.

Pisahkan kueri dari perubahan

  1. Gunakan Get-Command dan Get-Help untuk mengenali perintah serta parameternya.
  2. Catat nilai saat ini dengan perintah kueri.
  3. Jika perintah perubahan mendukung -WhatIf, periksa tindakan yang diusulkan terlebih dahulu.
  4. Nilai dampak operasional dan pemulihan secara terpisah dari pratinjau.
  5. Simpan berkas .ps1 yang mudah dibaca dan catat komputer serta konteks tempat menjalankannya.

Perintah yang tidak ditemukan dapat disebabkan salah eja, modul yang belum tersedia, atau versi PowerShell berbeda; ini bukan kesalahan akses ditolak. Anda dapat mempraktikkan kueri ini langsung di konsol. Menyimpan perintah sebagai berkas .ps1 tidak otomatis mengizinkan eksekusi berkas tersebut. Patuhi kebijakan eksekusi dan persyaratan tanda tangan organisasi tanpa menonaktifkan berbagai perlindungan agar skrip bisa berjalan.