Go pro: Panduan pengguna daya untuk PowerShell

Jika Anda bergumul dengan Windows 10, Anda pasti pernah mendengar tentang PowerShell. Jika Anda telah mencoba melakukan sesuatu yang mewah dengan Win7 / 8.1 baru-baru ini, PowerShell mungkin juga akan muncul. Setelah bertahun-tahun mengandalkan baris perintah Windows dan file batch yang digabungkan, inilah saatnya untuk mengarahkan pandangan Anda pada sesuatu yang lebih kuat, lebih adaptif — lebih baik.

PowerShell adalah tambahan yang sangat besar untuk kotak alat Windows, dan itu dapat memicu sedikit ketakutan mengingat besarnya itu. Apakah itu bahasa scripting, command shell, floor wax? Apakah Anda harus menautkan cmdlet dengan kelas .Net yang dipakai untuk menjalankan dengan penyedia? Dan mengapa semua dokumen dukungan berbicara tentang administrator — apakah saya harus menjadi admin Windows profesional untuk memanfaatkannya?

Bersantai. PowerShell sangat kuat, tetapi tidak perlu mengintimidasi.

Panduan berikut ditujukan bagi mereka yang telah menjalankan satu atau dua perintah Windows atau men-jimmied file batch. Anggap saja sebagai transformasi langkah demi langkah dari PowerShell yang penasaran menjadi PowerShell yang mampu.

Langkah 1: Tingkatkan

Hal pertama yang Anda perlukan adalah PowerShell itu sendiri. Jika Anda menggunakan Windows 10, Anda sudah menginstal PowerShell 5 — versi terbaru —. (Pembaruan Ulang Tahun Win10 memiliki 5.1, tetapi Anda tidak akan tahu perbedaannya dengan Pembaruan Musim Gugur 5.0.) Windows 8 dan 8.1 dikirimkan dengan PowerShell 4, yang cukup baik untuk membuat kaki Anda basah. Menginstal PowerShell di Windows 7 tidak sulit, tetapi membutuhkan perawatan ekstra — dan Anda perlu menginstal .Net Framework secara terpisah. JuanPablo Jofre merinci cara menginstal WMF 5.0 (Kerangka Manajemen Windows), yang menyertakan PowerShell, selain alat yang kemungkinan besar tidak akan Anda gunakan saat memulai, di MSDN.

PowerShell menawarkan dua antarmuka. Pengguna mahir akan menggunakan GUI lengkap, yang dikenal sebagai Integrated Scripting Environment (ISE). Pemula, bagaimanapun, paling baik dilayani oleh Konsol PowerShell, antarmuka teks sederhana yang mengingatkan pada baris perintah Windows, atau bahkan DOS 3.2.

Untuk memulai PowerShell sebagai Administrator dari Windows 10, klik Mulai dan gulir ke bawah daftar aplikasi ke Windows PowerShell. Klik pada baris itu, klik kanan Windows PowerShell, dan pilih Run as Administrator. Di Windows 8.1, cari Windows PowerShell di folder Sistem Windows. Di Win7, itu ada di folder Aksesoris. Anda dapat menjalankan PowerShell sebagai pengguna "normal" dengan mengikuti urutan yang sama tetapi dengan klik kiri.

Di versi Windows apa pun, Anda dapat menggunakan pencarian Windows untuk mencari PowerShell. Di Windows 8.1 dan Windows 10, Anda dapat meletakkannya di Ctrl-X "Power menu" (klik kanan tempat kosong di taskbar dan pilih Properties; pada tab Navigation, centang kotak untuk Replace Command Prompt). Setelah Anda membukanya, ada baiknya untuk menyematkan PowerShell ke bilah tugas Anda. Ya, Anda akan sangat menyukainya.

Langkah 2: Ketik perintah Windows model lama

Anda akan kagum betapa banyak sintaks baris perintah Windows berfungsi seperti yang diharapkan di PowerShell.

Misalnya, cdmengubah direktori (alias folder), dan dirtetap mencantumkan semua file dan folder yang disertakan dalam folder saat ini.

Bergantung pada cara Anda memulai konsol PowerShell, Anda dapat memulai di c:\Windows\system32atau di c:\Users\. Dalam contoh tangkapan layar, saya menggunakan cd ..(perhatikan spasi) untuk naik satu tingkat pada satu waktu, lalu menjalankan diruntuk mencantumkan semua file dan subfolder di C:\direktori.

Langkah 3: Instal file bantuan

Perintah menyukai cddan dirbukan perintah PowerShell asli. Mereka adalah alias — pengganti perintah PowerShell yang sebenarnya. Alias ​​bisa berguna bagi kita dengan memori jari yang sulit diatasi. Tetapi mereka bahkan tidak mulai menyentuh bagian terpenting dari PowerShell.

Untuk mulai merasakan PowerShell itu sendiri, ketik helpdiikuti dengan perintah yang Anda tahu. Misalnya, di tangkapan layar, saya mengetik help dir.

Bantuan PowerShell memberi tahu saya bahwa itu diradalah alias untuk perintah PowerShell Get-ChildItem. Benar saja, jika Anda mengetik get-childitemdi PS C:\>prompt, Anda melihat dengan tepat apa yang Anda lihat dengan dirperintah tersebut.

Seperti yang disebutkan di bagian bawah tangkapan layar, file bantuan untuk PowerShell tidak diinstal secara otomatis. Untuk mengambil mereka (Anda tidak ingin mendapatkan mereka), log on ke PowerShell dalam mode Administrator, kemudian ketik update-help. Menginstal file bantuan akan memakan waktu beberapa menit, dan Anda mungkin kehilangan beberapa modul — Bantuan untuk NetWNV dan SecureBoot gagal diinstal pada mesin uji saya. Tetapi setelah Anda selesai, sistem bantuan penuh akan siap membantu Anda.

Sejak saat itu, ketik get-helpdiikuti dengan perintah ("cmdlet" di PowerShell berbicara, dilafalkan "perintah-biarkan") yang menyangkut Anda dan lihat semua bantuan untuk item itu. Misalnya, get-help get-childitemmenghasilkan ringkasan get-childitemopsi. Ini juga meminta Anda untuk mengetikkan variasi pada tema. Jadi, berikut ini:

get-help get-childitem -examples

menghasilkan tujuh contoh rinci tentang cara menggunakan get-childitem. Perintah PowerShell

get-help get-childitem -detailed

menyertakan tujuh contoh tersebut, serta penjelasan mendetail tentang setiap parameter yang tersedia untuk get-childitemcmdlet.

Langkah 4: Dapatkan bantuan tentang parameter

Di help dirtangkapan layar, Anda mungkin telah memperhatikan ada dua daftar di bawah SYNTAXuntuk get-childitem. Fakta bahwa ada dua sintaks terpisah untuk cmdlet berarti ada dua cara menjalankan cmdlet. Bagaimana Anda menjaga sintaks tetap terpisah — dan apa arti parameternya? Jawabannya mudah, jika Anda tahu triknya.

Untuk mendapatkan semua detail tentang parameter untuk get-childitemcmdlet, atau cmdlet lainnya, gunakan -fullparameter, seperti ini:

get-help get-childitem -full

Itu menghasilkan daftar baris demi baris tentang apa yang dapat Anda lakukan dengan cmdlet dan apa yang mungkin (atau mungkin tidak!) Terjadi. Lihat tangkapan layar.

Memilah-milah detail parameter, cukup mudah untuk melihat bahwa get-childitemdapat digunakan untuk mengambil item "anak" (seperti nama subfolder atau nama file) di lokasi yang Anda tentukan, dengan atau tanpa karakter tertentu yang cocok. Sebagai contoh:

get-childItem “*.txt” -recurse

mengambil daftar semua *.txtfile " " di folder saat ini dan semua subfolder (karena -recurseparameter). Sedangkan sebagai berikut:

get-childitem “HKLM:\Software”

mengembalikan daftar semua kunci registri tingkat tinggi di HKEY_LOCAL_MACHINE\Software.

Jika Anda pernah mencoba masuk ke dalam registri menggunakan baris perintah Windows atau file batch, saya yakin Anda dapat melihat seberapa kuat jenis akses ini.

Langkah 5: Catat namanya

Ada alasan mengapa cmdlets yang telah kita lihat sejauh terlihat sama: get-childitem, update-help, dan get-helpsemua mengikuti konvensi kata kerja-kata benda yang sama. Untungnya, semua cmdlet PowerShell menggunakan konvensi ini, dengan kata kerja yang mendahului kata benda (tunggal). Bagi Anda yang menghabiskan waktu berminggu-minggu bergumul dengan perintah VB dan VBA yang tidak konsisten, dapat bernapas lega.

Untuk melihat ke mana kita akan pergi, lihat beberapa cmdlet yang paling umum (berkat blog Ed Wilson's Hey, Scripting Guy!). Mulailah dengan cmdlet yang menjangkau sistem Anda dan dapatkan informasi berguna, seperti berikut ini:

  • set-location: Setel lokasi kerja saat ini ke lokasi tertentu
  • get-content: Mendapat konten file
  • get-item: Mendapat file dan folder
  • copy-item: Menyalin item dari satu lokasi ke lokasi lain
  • remove-item: Menghapus file dan folder
  • get-process: Mendapatkan proses yang berjalan di komputer lokal atau jarak jauh
  • get-service: Mendapatkan layanan yang berjalan di komputer lokal atau jarak jauh
  • invoke-webrequest: Mendapat konten dari halaman web di internet

Untuk melihat cara kerja cmdlet tertentu, gunakan get-help, seperti di

get-help copy-item -full

Berdasarkan uraian bantuannya, Anda dapat dengan mudah mengetahui apa yang diinginkan cmdlet. Misalnya, jika Anda ingin menyalin semua file dan folder Anda dari Documentske c:\temp, Anda akan menggunakan:

copy-item c:\users\[username] \documents\* c:\temp

Saat Anda mengetikkan perintah itu, Anda akan melihat beberapa sentuhan bagus yang dibangun ke dalam lingkungan PowerShell. Misalnya, jika Anda mengetik copy-idan menekan tombol Tab, PowerShell mengisi Copy-Itemdan spasi. Jika Anda salah mengetik cmdlet dan PowerShell tidak dapat mengetahuinya, Anda mendapatkan deskripsi yang sangat menyeluruh tentang apa yang salah.

Coba cmdlet ini. (Ini mungkin mencoba membuat Anda menginstal program untuk membaca kotak "tentang". Jika demikian, abaikan saja.)

invoke-webrequest askwoody.com

Anda mendapatkan daftar singkat dari deklarasi konten halaman web, header, gambar, link, dan lainnya. Lihat cara kerjanya? Perhatikan dalam get-helpdaftar invoke-webrequestbahwa invoke-webrequestcmdlet "mengembalikan koleksi formulir, tautan, gambar, dan elemen HTML penting lainnya" —seperti yang akan Anda lihat di layar.

Beberapa cmdlet membantu Anda mengontrol atau mengaktifkan PowerShell itu sendiri:

  • get-command: Mencantumkan semua cmdlet yang tersedia (daftar panjang!)
  • get-verb: Mencantumkan semua kata kerja yang tersedia (bagian kiri cmdlet)
  • clear-host: Menghapus tampilan di program host

Berbagai parameter (ingat, get-help) memungkinkan Anda mengurangi perintah dan mempersempit opsi yang mungkin berguna bagi Anda. Misalnya, untuk melihat daftar semua cmdlet yang bekerja dengan layanan Windows, coba ini:

get-command *-service

Ini mencantumkan semua kata kerja yang tersedia dengan servicesebagai kata benda. Inilah hasilnya:

Get-Service

New-Service

Restart-Service

Resume-Service

Set-Service

Start-Service

Stop-Service

Suspend-Service

Anda dapat menggabungkan cmdlet ini dengan cmdlet lain untuk menggali hampir semua bagian PowerShell. Di situlah pipa berperan.

Langkah 6: Masukkan pipa

Jika Anda pernah menggunakan baris perintah Windows atau bekerja keras melalui file batch, Anda tahu tentang pengalihan dan pipa. Sederhananya, baik redirection (  >karakter) dan pipa ( |karakter) mengambil output dari suatu tindakan dan menempelkannya di tempat lain. Anda dapat, misalnya, mengalihkan keluaran dari dirperintah ke file teks, atau "menyalurkan" hasil pingperintah ke a find, untuk menyaring hasil yang menarik, seperti:

dir > temp.txt

ping askwoody.com | find “packets” > temp2.txt

Pada perintah kedua di atas, findperintah tersebut mencari string packetsdalam keluaran pipa dari askwoody.com pingdan menempelkan semua baris yang cocok dalam file bernama temp2.txt.

Mungkin mengejutkan, perintah pertama berfungsi dengan baik di PowerShell. Untuk menjalankan perintah kedua, Anda menginginkan sesuatu seperti ini:

ping askwoody.com | select-string packets | out-file temp2.txt

Menggunakan pengalihan dan pipa sangat memperluas kemampuan baris perintah Windows: Alih-alih menggulir tanpa henti ke bawah layar mencari string teks, misalnya, Anda dapat menyusun perintah Windows yang melakukan pemeriksaan untuk Anda.

PowerShell memiliki kemampuan pemipaan, tetapi tidak terbatas pada teks. Sebaliknya, PowerShell memungkinkan Anda meneruskan seluruh objek dari satu cmdlet ke cmdlet berikutnya, di mana sebuah "objek" adalah kombinasi data (disebut properti) dan tindakan (metode) yang dapat digunakan pada data.

Bagian yang sulit, bagaimanapun, terletak pada menyelaraskan objek. Jenis objek yang dikirim oleh satu cmdlet harus sesuai dengan jenis objek yang diterima oleh cmdlet penerima. Teks adalah jenis objek yang sangat sederhana, jadi jika Anda bekerja dengan teks, menyusun item itu mudah. Objek lain tidak begitu sederhana.

Bagaimana cara mengetahuinya? Selamat datang di get-membercmdlet. Jika Anda ingin mengetahui jenis objek yang dihasilkan cmdlet, gunakan pipa get-member. Misalnya, jika Anda mencoba mencari tahu proses yang berjalan di komputer Anda, dan Anda telah mempersempit pilihan ke get-processcmdlet, berikut cara Anda mengetahui apa yang get-processdihasilkan cmdlet:

get-process | get-member

Menjalankan perintah itu menghasilkan daftar panjang properti dan metode untuk get-process, tetapi di bagian paling awal daftar Anda dapat melihat jenis objek yang get-process membuat:

TypeName: System.Diagnostics.Process

Gambar di bawah juga memberitahu Anda bahwa get-processmemiliki sifat yang disebut Handles, Name, NPM, PM, SI, VM, dan WS.

Jika Anda ingin memanipulasi keluaran get-processsehingga Anda dapat mengerjakannya (sebagai lawan membuatnya menampilkan daftar panjang proses aktif di monitor), Anda perlu mencari cmdlet lain yang akan bekerja dengan System.Diagnostics.Processsebagai masukan. Untuk menemukan cmdlet yang mau, Anda cukup menggunakan… tunggu… PowerShell:

get-command -Parametertype System.Diagnostics.Process

Itu menghasilkan daftar semua cmdlet yang dapat menangani System.Diagnostics.Process.

Beberapa cmdlet terkenal sering mengambil hampir semua jenis masukan. Kepala di antara mereka: where-object. Mungkin membingungkan, where-objectmengulang setiap item yang dikirim ke pipeline, satu per satu, dan menerapkan kriteria pemilihan apa pun yang Anda minta. Ada penanda khusus yang disebut $_. yang memungkinkan Anda melangkah melalui setiap item di dalam pipa, satu per satu.

Katakanlah Anda ingin membuat daftar semua proses yang berjalan pada mesin Anda yang disebut " svchost" —dalam istilah PowerShell, Anda ingin mencocokkan pada Nameproperti  svchost. Coba perintah PowerShell ini:

get-process | where-object {$_.Name -eq “svchost”}

The where-objectcmdlet terlihat pada setiap System.Diagnostics.Processitem, membandingkan .Namedari item untuk “ svchost”; jika itemnya cocok, itu akan keluar dari ujung pipa dan diketik di monitor Anda. Lihat tangkapan layar.