Apa itu Windows PowerShell dan apa yang dimakannya? Bagian 1: Fitur Utama

Secara historis, utilitas command-line pada sistem Unix lebih baik dikembangkan daripada pada Windows, namun, dengan munculnya solusi baru, situasinya telah berubah.

Windows PowerShell memungkinkan administrator sistem untuk mengotomatisasi sebagian besar tugas rutin. Dengan bantuannya, Anda dapat mengubah pengaturan, menghentikan dan memulai layanan, serta melakukan pemeliharaan sebagian besar aplikasi yang diinstal. Akan salah untuk menganggap jendela biru sebagai penerjemah perintah lain. Pendekatan ini tidak mencerminkan esensi dari inovasi yang diajukan oleh Microsoft. Sebenarnya, kemungkinan Windows PowerShell jauh lebih luas: dalam serangkaian artikel singkat, kami akan mencoba mencari tahu bagaimana solusi Microsoft berbeda dari alat yang lebih dikenal.



Fitur utama 


Tentu saja, Windows PowerShell terutama shell perintah dengan bahasa scripting, awalnya dibuat atas dasar .NET Framework, dan kemudian pada .NET Core. Tidak seperti shell yang menerima dan mengembalikan data tekstual, Windows PowerShell bekerja dengan .NET class yang memiliki properti dan metode. PowerShell memungkinkan Anda untuk mengeksekusi perintah biasa, dan juga memberikan akses ke objek COM, WMI, dan ADSI. Ini menggunakan berbagai repositori, seperti sistem file atau registri Windows, untuk akses yang disebut pemasok (penyedia). Perlu dicatat kemampuan untuk menanamkan komponen PowerShell yang dapat dieksekusi dalam aplikasi lain untuk mengimplementasikan berbagai operasi, termasuk melalui antarmuka grafis. Kebalikannya juga benar: banyak aplikasi Windows menyediakan akses ke antarmuka manajemen mereka melalui PowerShell. 

Windows PowerShell memungkinkan Anda untuk:

  • Ubah pengaturan sistem operasi;
  • Kelola layanan dan proses;
  • Konfigurasikan peran dan komponen server;
  • Instal perangkat lunak
  • Kelola perangkat lunak yang diinstal melalui antarmuka khusus;
  • Sematkan komponen yang dapat dieksekusi dalam program pihak ketiga;
  • Buat skrip untuk mengotomatisasi tugas administrasi;
  • Bekerja dengan sistem file, registri Windows, toko sertifikat, dll.

Shell dan lingkungan pengembangan


Ada Windows PowerShell dalam dua cara: selain emulator konsol dengan shell perintah, ada lingkungan scripting terintegrasi (ISE). Untuk mengakses antarmuka baris perintah, cukup pilih pintasan yang sesuai di menu Windows atau jalankan powershell.exe dari menu Run. Jendela biru muncul di layar, secara signifikan berbeda dalam kemampuan dari cmd.exe antediluvian. Ada pelengkapan otomatis dan fitur lain yang akrab bagi pengguna shell perintah untuk sistem Unix.



Untuk bekerja dengan shell, Anda perlu mengingat beberapa kombinasi tombol:

  • Panah atas dan bawah menelusuri sejarah untuk mengulangi perintah yang sebelumnya diketik;
  • Panah kanan di akhir baris mendaur ulang perintah sebelumnya karakter demi karakter;
  • Ctrl + Home menghapus teks yang diketik dari posisi kursor ke awal baris;
  • Ctrl + End menghapus teks dari kursor ke akhir baris.

F7 menampilkan jendela dengan perintah yang diketik dan memungkinkan Anda memilih salah satunya. Pilihan mouse, salin-tempel, posisi kursor, penghapusan, backspace juga berfungsi di konsol - semuanya seperti yang kita mau.


Windows PowerShell ISE adalah lingkungan pengembangan lengkap yang mendukung penyorotan tab dan sintaksis dengan editor kode, perancang perintah, debugger bawaan, dan kesenangan pemrograman lainnya. Jika Anda menulis tanda hubung di editor lingkungan pengembangan setelah nama perintah, Anda akan mendapatkan semua parameter yang tersedia dengan tipe di daftar turun bawah. Anda dapat meluncurkan PowerShell ISE baik melalui pintasan dari menu sistem atau menggunakan file yang dapat dieksekusi powershell_ise.exe.


Cmdlet 


Di Windows PowerShell, yang disebut cmdlet Ini adalah kelas .NET khusus yang berisi beragam fungsi. Mereka dinamai sesuai dengan prinsip "Action-Object" (atau "Verb-Noun, jika Anda lebih suka), dan ikat yang dipisahkan dengan tanda hubung menyerupai predikat dan subjek dalam kalimat bahasa alami. Misalnya, Get-Help secara harfiah berarti "Get-Help" atau, dalam konteks PowerShell: "Show-Help". Sebenarnya, ini adalah analog dari perintah man di sistem Unix dan manual di PowerShell perlu diminta dengan cara ini, dan tidak dengan memanggil cmdlet dengan kunci --help atau /? Jangan lupa tentang dokumentasi PowerShell online: Microsoft telah cukup detail.

Selain Get, kata kerja lain (dan tidak hanya kata kerja, secara tegas) digunakan dalam cmdlet untuk menunjukkan tindakan. Dalam daftar di bawah ini kami berikan beberapa contoh:

Add- tambahkan;
Clear- bersih;
Enable- aktifkan;
Disable- mematikan;
New- buat;
Remove- menghapus;
Set- bertanya;
Start- Lari;
Stop- berhenti;
Export- ekspor;
Import- impor.

Ada cmdlet sistem, pengguna, dan opsional: sebagai hasil dari eksekusi, mereka semua mengembalikan objek atau array objek. Mereka tidak peka terhadap huruf besar-kecil, mis. dari sudut pandang penerjemah perintah, tidak ada perbedaan antara Get-Help dan get-help. Karakter ';' digunakan untuk pemisahan, tetapi wajib untuk mengaturnya hanya jika beberapa cmdlet dieksekusi pada baris yang sama. 

Cmdlet Windows PowerShell dikelompokkan ke dalam modul (NetTCPIP, Hyper-V, dll.), Dan cmdlet Get-Command ada untuk mencari berdasarkan objek dan tindakan. Anda dapat menunjukkan bantuan padanya seperti ini:

Get-Help Get-Command



Secara default, perintah menampilkan bantuan singkat, tetapi jika perlu, parameter (argumen) diteruskan ke cmdlet. Dengan menggunakan mereka, misalnya, Anda bisa mendapatkan bantuan terperinci (-Detailed parameter) atau penuh (-Full parameter), serta menampilkan contoh (-Contoh parameter):

Get-Help Get-Command -Examples

Bantuan di Windows PowerShell diperbarui dengan cmdlet Pembaruan-Bantuan. Jika baris perintah terlalu panjang, argumen cmdlet dapat ditransfer ke yang berikutnya dengan menulis karakter layanan `` '' dan menekan Enter - cukup selesai menulis perintah pada satu baris dan lanjutkan pada yang lain.

Berikut adalah beberapa contoh cmdlet umum: 

Get-Process- tampilkan proses yang berjalan di sistem;
Get-Service- menunjukkan layanan dan statusnya;
Get-Content- menampilkan isi file.

Untuk cmdlet yang sering digunakan dan utilitas eksternal di Windows PowerShell ada sinonim pendek - alias (dari Alias โ€‹โ€‹Inggris). Sebagai contoh, dir adalah alias dari Get-ChildItem. Daftar sinonim berisi analog perintah dari sistem Unix (ls, ps, dll.), Dan cmdlet Get-Help disebut oleh perintah bantuan. Daftar sinonim lengkap dapat dilihat menggunakan cmdlet Get-Alias:


Script PowerShell, Fungsi, Modul, dan Bahasa


Skrip Windows PowerShell disimpan sebagai file teks biasa dengan ekstensi .ps1. Anda tidak dapat meluncurkannya dengan klik dua kali: Anda perlu mengklik kanan menu konteks dan memilih item "Jalankan di PowerShell". Dari konsol, Anda harus menentukan path lengkap ke skrip, atau pergi ke direktori yang sesuai dan menulis nama file. Menjalankan skrip juga dibatasi oleh kebijakan sistem, dan untuk memeriksa pengaturan saat ini, Anda dapat menggunakan cmdlet Get-ExecutionPolicy, yang akan memberikan salah satu dari nilai-nilai berikut:

Restricted- eksekusi skrip dilarang (secara default);
AllSigned- hanya peluncuran skrip yang ditandatangani oleh pengembang tepercaya yang diizinkan;
RemoteSigned- diizinkan untuk menjalankan skrip yang ditandatangani dan khusus;
Unrestricted- diizinkan untuk menjalankan skrip apa pun.

Administrator memiliki dua opsi. Yang paling aman melibatkan penandatanganan skrip, tetapi ini adalah sihir yang cukup serius - kami akan menghadapinya dalam artikel berikut. Sekarang kita akan mengikuti jalan perlawanan paling sedikit dan mengubah kebijakan:

Set-ExecutionPolicy RemoteSigned


Untuk melakukan ini, PowerShell harus dijalankan sebagai administrator, meskipun menggunakan parameter khusus Anda dapat mengubah kebijakan untuk pengguna saat ini.

Skrip ditulis dalam bahasa pemrograman berorientasi objek, perintahnya dinamai sesuai dengan prinsip yang sama dengan cmdlet yang dibahas sebelumnya: "Action-Object" ("Verb-Noun"). Tujuan utamanya adalah otomatisasi tugas-tugas administrasi, tetapi merupakan bahasa yang ditafsirkan penuh yang memiliki semua konstruksi yang diperlukan: percabangan bersyarat, loop, variabel, array, objek, penanganan kesalahan, dll. Editor teks apa pun cocok untuk menulis skrip, tetapi paling mudah untuk memulai Windows PowerShell ISE.

Anda dapat mengirimkan parameter ke skrip, membuatnya wajib, dan juga menetapkan nilai default. Selain itu, Windows PowerShell memungkinkan Anda untuk membuat fungsi dan memanggilnya dengan cara yang sama seperti cmdlet: untuk ini, Anda menggunakan fungsi Function dan kurung kurawal. Sebuah skrip dengan fungsi disebut modul dan memiliki ekstensi .psm1. Modul harus disimpan dalam direktori yang ditentukan dalam variabel lingkungan PowerShell. Anda dapat melihatnya menggunakan perintah berikut:

Get-ChildItem Env:\PSModulePath | Format-Table -AutoSize

Konveyor


Pada contoh terakhir, kami menggunakan desain yang akrab bagi pengguna shell untuk sistem Unix. Di Windows PowerShell, bilah vertikal juga memungkinkan Anda untuk mentransfer output dari satu perintah ke input yang lain, tetapi ada perbedaan yang signifikan dalam implementasi pipeline: ini bukan tentang set karakter atau beberapa teks. Cmdlet internal atau fungsi yang ditentukan pengguna mengembalikan objek atau array objek, dan juga dapat menerimanya pada input. Seperti shell Bourne dan banyak pengikutnya, PowerShell menyederhanakan tugas-tugas kompleks dengan sebuah saluran pipa.

Contoh paling sederhana dari sebuah pipa terlihat seperti ini:

Get-Service | Sort-Object -property Status


Pertama, cmdlet Get-Service dijalankan, dan kemudian semua layanan yang diterimanya diteruskan ke cmdlet Sort-Object untuk diurutkan berdasarkan properti Status. Argumen yang mana hasil dari bagian sebelumnya dari pipa disalurkan tergantung pada jenisnya - biasanya ini adalah InputObject. Masalah ini akan dibahas secara lebih rinci dalam artikel yang ditujukan untuk bahasa pemrograman PowerShell. 

Jika mau, Anda dapat melanjutkan rantai dan meneruskan hasil Sort-Object ke cmdlet lain (mereka akan dieksekusi dari kiri ke kanan). Omong-omong, desain Windows-familiar untuk paging output juga tersedia untuk semua Unixoids: 

Get-Service | Sort-Object -property Status | more

Menjalankan tugas di latar belakang 


Cukup sering, Anda perlu menjalankan perintah tertentu di latar belakang agar tidak menunggu hasil eksekusi di sesi shell. Di Windows PowerShell, ada beberapa cmdlet untuk kasus ini:

Start-Job- meluncurkan tugas latar belakang;
Stop-Job- hentikan tugas latar belakang;
Get-Job- Lihat daftar tugas latar belakang;
Receive-Job- melihat hasil tugas latar belakang;
Remove-Job- penghapusan tugas latar belakang;
Wait-Job- Transfer tugas latar belakang kembali ke konsol.

Untuk memulai tugas latar belakang, kami menggunakan cmdlet Mulai-Pekerjaan dan menunjukkan kurung keriting sebuah perintah atau seperangkat perintah:

Start-Job {Get-Service}


Tugas latar belakang di Windows PowerShell dapat dimanipulasi dengan mengetahui nama mereka. Pertama, pelajari cara menampilkannya:

Get-Job


Sekarang kami menunjukkan hasil dari Job1:

Receive-Job Job1 | more


Sederhana saja.

Eksekusi perintah jarak jauh


Windows PowerShell memungkinkan Anda untuk mengeksekusi perintah dan skrip tidak hanya pada lokal, tetapi juga pada komputer jarak jauh, dan bahkan pada seluruh kelompok mesin. Ada beberapa cara untuk melakukan ini:

  • Banyak cmdlet memiliki parameter -ComputerName, tetapi cara ini akan gagal, misalnya, membuat pipa;
  • Cmdlet Enter-PSSessionmemungkinkan Anda untuk membuat sesi interaktif pada mesin jarak jauh; 
  • Menggunakan cmdlet, Invoke-CommandAnda dapat menjalankan perintah atau skrip pada satu atau beberapa komputer jarak jauh.

Versi PowerShell


Sejak rilis pertama pada 2006, PowerShell telah banyak berubah. Alat ini tersedia untuk banyak sistem yang berjalan pada platform perangkat keras yang berbeda (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU / Linux, dan OS X. Rilis terbaru 6.2 dirilis pada 10 Januari 2018. Skrip yang ditulis untuk versi sebelumnya lebih mungkin berfungsi di versi yang lebih baru, tetapi mungkin ada masalah dengan port terbalik, karena selama bertahun-tahun pengembangan, sejumlah cmdlet baru telah muncul di PowerShell. Anda bisa mengetahui versi shell yang diinstal di komputer menggunakan properti PSVersion dari variabel bawaan $ PSVersionTable:

$PSVersionTable.PSVersion


Anda juga dapat menggunakan cmdlet:

Get-Variable -Name PSVersionTable โ€“ValueOnly


Hal yang sama dilakukan dengan cmdlet Get-Host. Sebenarnya, ada banyak pilihan, tetapi untuk menggunakannya Anda perlu mempelajari bahasa pemrograman PowerShell, yang akan kita lakukan di artikel selanjutnya

Ringkasan 


Microsoft telah berhasil membuat shell perintah yang benar-benar kuat dengan lingkungan terintegrasi yang nyaman untuk mengembangkan skrip. Ini berbeda dari cara yang kita kenal di dunia Unix dengan integrasi mendalam dengan sistem operasi Windows, serta perangkat lunak untuk mereka dan platform .NET Core. PowerShell dapat disebut shell berorientasi objek karena cmdlet dan fungsi yang ditentukan pengguna mengembalikan objek atau array objek dan dapat menerimanya pada input. Kami berpikir bahwa semua administrator server Windows harus memiliki alat ini: waktu telah berlalu ketika mereka dapat melakukannya tanpa baris perintah. Shell konsol canggih sangat diperlukan pada VPS murah kami yang menjalankan Windows Server Core , tapi itu cerita lain.

2: Windows PowerShell
3: ,
4: ,

Source: https://habr.com/ru/post/undefined/


All Articles