Go pro: Panduan pengguna kuasa untuk PowerShell
Sekiranya anda bergelut dengan Windows 10, anda pasti akan mendengar PowerShell. Sekiranya anda telah mencuba sesuatu yang menarik dengan Win7 / 8.1 baru-baru ini, PowerShell juga akan muncul. Setelah bertahun-tahun bergantung pada baris perintah Windows dan melampirkan fail batch, kini saatnya untuk melihat pandangan anda pada sesuatu yang lebih kuat, lebih adaptif — lebih baik.
PowerShell adalah tambahan yang sangat besar pada kotak alat Windows, dan ia dapat menimbulkan sedikit ketakutan memandangkan besarnya itu. Adakah itu bahasa skrip, shell perintah, lilin lantai? Adakah anda perlu mengaitkan cmdlet dengan kelas .Net untuk menjalankan dengan pembekal? Dan mengapa semua dokumen sokongan membincangkan pentadbir — adakah saya harus menjadi pentadbir Windows profesional untuk menggunakannya?
Berehatlah. PowerShell sangat kuat, tetapi tidak perlu menakutkan.
Panduan berikut ditujukan kepada mereka yang telah menjalankan satu atau dua perintah Windows atau meniru fail batch. Anggap ia sebagai transformasi langkah demi langkah dari PowerShell yang ingin tahu kepada PowerShell yang mampu.
Langkah 1: Naikkannya
Perkara pertama yang anda perlukan adalah PowerShell itu sendiri. Sekiranya anda menggunakan Windows 10, anda sudah memasang PowerShell 5 — versi terkini —. (Win10 Anniversary Update mempunyai 5.1, tetapi anda tidak akan mengetahui perbezaannya dengan Fall Update 5.0.) Windows 8 dan 8.1 dihantar dengan PowerShell 4, yang cukup baik untuk membasahi kaki anda. Memasang PowerShell pada Windows 7 tidak sukar, tetapi memerlukan perhatian lebih - dan anda perlu memasang .Net Framework secara berasingan. JuanPablo Jofre memperincikan cara memasang WMF 5.0 (Windows Management Framework), yang merangkumi PowerShell, selain alat yang kemungkinan besar tidak akan anda gunakan semasa memulakannya, di MSDN.
PowerShell menawarkan dua antara muka. Pengguna lanjutan akan menggunakan GUI sepenuhnya, yang dikenali sebagai Integrated Scripting Environment (ISE). Namun, pemula dilayan dengan baik oleh PowerShell Console, antara muka teks ringkas yang mengingatkan pada baris arahan Windows, atau bahkan DOS 3.2.
Untuk memulakan PowerShell sebagai Pentadbir dari Windows 10, klik Mula dan tatal ke bawah senarai aplikasi ke Windows PowerShell. Klik pada baris itu, klik kanan Windows PowerShell, dan pilih Run as Administrator. Di Windows 8.1, cari Windows PowerShell dalam folder Sistem Windows. Di Win7, terdapat di folder Aksesori. Anda boleh menjalankan PowerShell sebagai pengguna "normal" dengan mengikuti urutan yang sama tetapi dengan klik kiri.
Di mana-mana versi Windows, anda boleh menggunakan carian Windows untuk mencari PowerShell. Pada Windows 8.1 dan Windows 10, anda boleh meletakkannya di "Power menu" Ctrl-X (klik kanan tempat kosong di bar tugas dan pilih Properties; pada tab Navigasi, centang kotak untuk Mengganti Prompt Perintah). Setelah anda membukanya, adalah idea yang baik untuk menyematkan PowerShell ke bar tugas anda. Ya, anda akan sangat menyukainya.
Langkah 2: Taip arahan Windows kuno
Anda akan kagum dengan seberapa banyak sintaks baris perintah Windows berfungsi seperti yang diharapkan di PowerShell.
Contohnya, cd
mengubah direktori (folder alias), dan dir
masih menyenaraikan semua fail dan folder yang disertakan dalam folder semasa.
Bergantung pada bagaimana anda memulakan konsol PowerShell, anda mungkin bermula pada c:\Windows\system32
atau di c:\Users\
. Dalam contoh tangkapan skrin, saya menggunakan cd ..
(perhatikan ruang) untuk naik satu tingkat pada satu waktu, kemudian jalankan dir
untuk menyenaraikan semua fail dan subfolder dalam C:\
direktori.
Langkah 3: Pasang fail bantuan
Perintah suka cd
dan dir
bukan perintah PowerShell asli. Itu alias — pengganti perintah PowerShell yang sebenar. Alias boleh berguna bagi kita dengan memori jari yang sukar diatasi. Tetapi mereka bahkan tidak mula menyentuh bahagian terpenting PowerShell.
Untuk mula merasakan PowerShell sendiri, ketik help
diikuti dengan arahan yang anda tahu. Sebagai contoh, dalam tangkapan skrin, saya menaip help dir
.
Bantuan PowerShell memberitahu saya bahawa itu dir
adalah alias untuk arahan PowerShell Get-ChildItem
. Sudah tentu, jika anda menaip get-childitem
pada arahan PS C:\>
, anda dapat melihat apa yang anda lihat dengan dir
arahan.
Seperti yang dinyatakan di bahagian bawah tangkapan skrin, fail bantuan untuk PowerShell tidak dipasang secara automatik. Untuk mengambil mereka (anda yang ingin mendapatkan mereka), layari PowerShell dalam mod Administrator, kemudian taip update-help
. Memasang fail bantuan akan memakan masa beberapa minit, dan anda mungkin kehilangan beberapa modul — Bantuan untuk NetWNV dan SecureBoot gagal dipasang pada mesin ujian saya. Tetapi apabila anda selesai, sistem bantuan penuh akan sesuai dengan permintaan anda.
Mulai saat itu, ketik get-help
diikuti dengan perintah ("cmdlet" dalam PowerShell speak, diucapkan "command-let") yang menyangkut anda dan lihat semua bantuan untuk item tersebut. Sebagai contoh, get-help get-childitem
menghasilkan ringkasan get-childitem
pilihan. Ini juga mendorong anda untuk mengetik variasi pada tema. Oleh itu, berikut:
get-help get-childitem -examples
menghasilkan tujuh contoh terperinci mengenai cara penggunaan get-childitem
. Perintah PowerShell
get-help get-childitem -detailed
merangkumi tujuh contoh tersebut, serta penjelasan terperinci mengenai setiap parameter yang tersedia untuk get-childitem
cmdlet.
Langkah 4: Dapatkan bantuan mengenai parameternya
Dalam help dir
tangkapan skrin, anda mungkin menyedari terdapat dua senarai SYNTAX
untuk get-childitem
. Fakta bahawa terdapat dua sintaksis berasingan untuk cmdlet bermaksud ada dua cara menjalankan cmdlet. Bagaimana anda memisahkan sintaksis - dan apakah maksud parameter? Jawapannya mudah, jika anda tahu caranya.
Untuk mendapatkan semua butiran mengenai parameter untuk get-childitem
cmdlet, atau cmdlet lain, gunakan -full
parameter seperti ini:
get-help get-childitem -full
Itu menghasilkan senarai demi baris apa yang boleh anda lakukan dengan cmdlet dan apa yang mungkin berlaku (atau mungkin tidak!) Lihat tangkapan skrin.
Menyaring perincian parameter, cukup mudah dilihat yang get-childitem
dapat digunakan untuk mengambil item "anak" (seperti nama subfolder atau nama fail) di lokasi yang anda tentukan, dengan atau tanpa padanan karakter tertentu. Sebagai contoh:
get-childItem “*.txt” -recurse
mengambil senarai semua *.txt
fail " " dalam folder semasa dan semua subfolder (kerana -recurse
parameter). Manakala yang berikut:
get-childitem “HKLM:\Software”
mengembalikan senarai semua kunci pendaftaran peringkat tinggi di HKEY_LOCAL_MACHINE\Software
.
Sekiranya anda pernah mencuba masuk ke dalam registri menggunakan baris perintah Windows atau fail kumpulan, saya pasti anda dapat melihat betapa kuatnya akses semacam ini.
Langkah 5: Tuliskan namanya
Ada sebab mengapa cmdlets kita lihat setakat ini kelihatan sama: get-childitem
, update-help
, dan get-help
semua ikut sama kata kerja-kata konvensyen. Dengan penuh kasih sayang, semua cmdlet PowerShell menggunakan konvensyen ini, dengan kata kerja yang mendahului kata nama (tunggal). Anda yang menghabiskan berminggu-minggu berjuang dengan perintah VB dan VBA yang tidak konsisten dapat menarik nafas lega.
Untuk melihat ke mana kita pergi, lihatlah beberapa cmdlet yang paling biasa (terima kasih kepada blog Ed Wilson Hey, Scripting Guy!). Mulakan dengan cmdlet yang masuk ke sistem anda dan tarik maklumat berguna, seperti yang berikut:
set-location
: Menetapkan lokasi kerja semasa ke lokasi yang ditentukanget-content
: Mendapatkan kandungan failget-item
: Mendapat fail dan foldercopy-item
: Menyalin item dari satu lokasi ke lokasi lainremove-item
: Memadam fail dan folderget-process
: Mendapatkan proses yang dijalankan di komputer tempatan atau jauhget-service
: Mendapatkan perkhidmatan berjalan di komputer tempatan atau jauhinvoke-webrequest
: Mendapatkan kandungan dari laman web di internet
Untuk melihat bagaimana cmdlet tertentu berfungsi, gunakan get-help
seperti dalam
get-help copy-item -full
Berdasarkan keterangan pertolongannya, anda dapat dengan mudah mengetahui apa yang dikehendaki oleh cmdlet. Sebagai contoh, jika anda mahu untuk menyalin semua fail dan folder anda dari Documents
ke c:\temp
, anda akan menggunakan:
copy-item c:\users\[username] \documents\* c:\temp
Semasa anda memasukkan arahan itu, anda akan melihat beberapa sentuhan bagus yang terdapat di dalam persekitaran PowerShell. Sebagai contoh, jika anda menaip copy-i
dan menekan kekunci Tab, PowerShell mengisi Copy-Item
dan ruang. Sekiranya anda salah mengetik cmdlet dan PowerShell tidak dapat mengetahuinya, anda akan mendapat penerangan yang terperinci mengenai apa yang salah.
Cuba cmdlet ini. (Mungkin akan membuat anda memasang program untuk membaca kotak "tentang". Jika ya, abaikan.)
invoke-webrequest askwoody.com
Anda mendapat senarai ringkas pernyataan isi laman web, tajuk, gambar, pautan dan banyak lagi. Lihat bagaimana ia berfungsi? Perhatikan dalam get-help
senarai invoke-webrequest
bahawa invoke-webrequest
cmdlet "mengembalikan koleksi bentuk, pautan, gambar, dan elemen HTML penting lainnya" - tepat apa yang harus anda lihat di layar anda.
Beberapa cmdlet membantu anda mengawal atau menggunakan PowerShell sendiri:
get-command
: Menyenaraikan semua cmdlet yang tersedia (senarai panjang!)get-verb
: Menyenaraikan semua kata kerja yang tersedia (bahagian kiri cmdlet)clear-host
: Kosongkan paparan dalam program hos
Pelbagai parameter (ingat, get-help
) membiarkan anda mengecilkan perintah dan mempersempit pilihan yang mungkin berguna bagi anda. Sebagai contoh, untuk melihat senarai semua cmdlet yang berfungsi dengan perkhidmatan Windows, cubalah ini:
get-command *-service
Ia menyenaraikan semua kata kerja yang tersedia service
sebagai kata nama. Inilah hasilnya:
Get-Service
New-Service
Restart-Service
Resume-Service
Set-Service
Start-Service
Stop-Service
Suspend-Service
Anda boleh menggabungkan cmdlet ini dengan cmdlet lain untuk menggali hampir semua bahagian PowerShell. Di situlah paip masuk ke dalam gambar.
Langkah 6: Masukkan paip
Sekiranya anda pernah menggunakan baris arahan Windows atau menggunakan fail batch, anda tahu mengenai pengalihan dan paip. Secara sederhana, pengalihan ( >
watak) dan paip ( |
watak) mengambil output dari tindakan dan melekat di tempat lain. Anda dapat, misalnya, mengalihkan output dir
perintah ke file teks, atau "pipa" hasil ping
perintah menjadi find
, untuk menyaring hasil yang menarik, seperti:
dir > temp.txt
ping askwoody.com | find “packets” > temp2.txt
Dalam perintah kedua di atas, find
perintah mencari rentetan packets
dalam output yang disalurkan dari askwoody.com ping
dan menempelkan semua baris yang sesuai dalam fail yang disebut temp2.txt
.
Mungkin mengejutkan, perintah pertama berfungsi dengan baik di PowerShell. Untuk menjalankan arahan kedua, anda mahukan sesuatu seperti ini:
ping askwoody.com | select-string packets | out-file temp2.txt
Dengan menggunakan pengalihan dan paip meluaskan kemampuan baris perintah Windows: Daripada menatal tanpa henti ke bawah skrin untuk mencari rentetan teks, misalnya, anda boleh mengumpulkan perintah Windows yang disalurkan yang melakukan pemeriksaan untuk anda.
PowerShell mempunyai kemampuan perpipaan, tetapi tidak terbatas pada teks. Sebagai gantinya, PowerShell memungkinkan Anda meneruskan seluruh objek dari satu cmdlet ke yang berikutnya, di mana "objek" adalah gabungan data (disebut sifat) dan tindakan (kaedah) yang dapat digunakan pada data.
Bahagian yang sukar, bagaimanapun, terletak pada menyelaraskan objek. Jenis objek yang dihantar 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 adalah mudah. Objek lain tidak begitu rendah.
Bagaimana untuk mengetahuinya? Selamat datang ke get-member
cmdlet. Sekiranya anda ingin mengetahui jenis objek yang dihasilkan cmdlet, pasangkannya get-member
. Contohnya, jika anda ingin mengetahui proses yang dijalankan di komputer anda, dan anda telah mempersempit pilihan ke get-process
cmdlet, berikut adalah cara anda mengetahui apa yang get-process
dihasilkan oleh cmdlet:
get-process | get-member
Menjalankan perintah menghasilkan senarai panjang sifat dan kaedah untuk get-process
, tetapi pada awal senarai anda dapat melihat jenis objek yang get-process
mencipta:
TypeName: System.Diagnostics.Process
Di bawah screenshot juga memberitahu anda yang get-process
mempunyai ciri-ciri yang dipanggil Handles
, Name
, NPM
, PM
, SI
, VM
, dan WS
.
Sekiranya anda ingin memanipulasi output get-process
sehingga anda dapat bekerja dengannya (berbanding dengan memaparkan senarai panjang proses aktif pada monitor), anda perlu mencari cmdlet lain yang akan berfungsi System.Diagnostics.Process
sebagai input. Untuk mencari cmdlet yang bersedia, anda hanya menggunakan ... tunggu ... PowerShell:
get-command -Parametertype System.Diagnostics.Process
Itu menghasilkan senarai semua cmdlet yang dapat dikendalikan System.Diagnostics.Process
.
Beberapa cmdlet terkenal kerana mengambil hampir semua jenis input. Ketua di kalangan mereka: where-object
. Mungkin membingungkan, where-object
mengulangi setiap item yang dikirim ke saluran pipa, satu demi satu, dan menerapkan kriteria pemilihan apa pun yang anda minta. Terdapat penanda khas yang dipanggil $_
. yang membolehkan anda menelusuri setiap item di dalam paip, satu demi satu.
Katakan anda ingin membuat senarai semua proses yang berjalan di mesin anda yang disebut " svchost
" - dalam PowerShell, anda mahu memadankan pada Name
harta tanah svchost
. Cuba arahan PowerShell ini:
get-process | where-object {$_.Name -eq “svchost”}
Yang where-object
kelihatan cmdlet pada setiap System.Diagnostics.Process
item, membandingkan .Name
item ke " svchost
"; jika item itu sesuai, ia akan meludahkan hujung paip dan menaip pada monitor anda. Lihat tangkapan skrin.