Pengertian, Fitur, Perintah Dasar PowerShell dan Penjelasan Lengkapnya


PENGERTIAN, FITUR, PERINTAH DASAR POWERSHELL DAN PENJELASAN LENGKAPNYA


FORDIASI.COM | INTERNET - Apa yang perlu kamu ketahui untuk membuka kemampuan penuh Microsoft PowerShell. PowerShell bisa menjadi teman terbaik admin IT jika mereka tahu cara menggunakannya.


Apa itu PowerShell?


Microsoft PowerShell adalah alat administratif yang hebat yang antara lain dapat membantu kamu mengotomatiskan tugas untuk komputer dan jaringan kamu. PowerShell berisi elemen Command Prompt dan dibangun di atas kerangka .NET. Ini telah lama menjadi alat pilihan bagi administrator IT untuk mengelola jaringan besar.


Belajar menggunakan PowerShell akan memungkinkan kamu menyederhanakan banyak tugas sehari-hari yang membosankan. kamu juga dapat membuat perubahan di seluruh sistem di seluruh jaringan kamu, jadi kamu tidak perlu membuat penyesuaian individual untuk setiap server. Akhir-akhir ini, ini menjadi bagian penting dalam menjalankan lingkungan cloud hybrid.


PowerShell adalah penghemat waktu utama dan memiliki begitu banyak kegunaan lain untuk membuat kamu lebih produktif dan menjaga jaringan kamu berjalan secara efisien. Di antara hal-hal dasar yang dapat kamu lakukan dengannya, kamu dapat menjadwalkan pembaruan harian pada sistem, menghasilkan laporan tentang proses saat ini, layanan siklus, dan banyak hal lainnya. Memang benar bahwa banyak dari tugas ini dapat dilakukan melalui GUI, namun inti dari PowerShell adalah melakukannya lebih cepat.

$ads={1}


Jika kamu memiliki tugas pemeliharaan rutin yang memerlukan beberapa menit untuk memasukkan dan menyiapkan, kamu dapat membuat skrip fungsi yang sama ke dalam satu perintah yang kamu beri nama di PowerShell. Jadi lain kali, kamu cukup menarik skrip itu di bawah nama yang kamu simpan di bawahnya dan itu akan berjalan di latar belakang. Menguasai logika skrip PowerShell, memahami cara kerja mesin objek dan variabelnya, dan menerapkannya dengan cerdas di jaringan kamu akan membuat kamu bertanya-tanya mengapa kamu sudah lama tidak menggunakannya.


Panduan ini akan memandu kamu melalui dasar-dasar PowerShell, yang mudah dipelajari oleh profesional IT tingkat pemula, terutama jika kamu sudah terbiasa dengan Command Prompt Window. Kami akan membahas cara menggunakan alat dan perintah dasar, cara memanipulasi file dan folder, memahami objek, menggunakan variabel, dan mengelola server jarak jauh.


Tools Pengantar, commands dan Modul


Seperti kebanyakan hal dalam hidup, meluangkan waktu untuk mempelajari dan sepenuhnya memahami dasar-dasar akan sangat membantu menghindari sakit kepala dan akan membantu kamu memahami konsep yang lebih maju saat kamu menyelam lebih dalam ke dunia perintah PowerShell. Tiga konsep yang diperkenalkan di bagian ini adalah dasar untuk memahami konsep-konsep kunci yang membentuk dasar PowerShell.


Tools PowerShell


PowerShell diinstal secara default di Windows 10, Windows 7, Windows Server 2008 R2, dan versi Windows yang lebih baru. Versi PowerShell yang lebih baru memperkenalkan fitur dan "cmdlet" baru (istilah Microsoft untuk perintah PowerShell – diucapkan "command-let") dan diinstal menggunakan versi Windows Management Framework (WMF) yang sesuai. Saat ini WMF(?) 5.1 adalah versi terbaru yang direkomendasikan untuk penggunaan produksi. Dalam beberapa kasus, beberapa fitur baru bergantung pada sistem operasi selain versi WMF. Misalnya, Windows 8 dan Windows Server 2012 mendukung cmdlet Test-NetConnection, yang memungkinkan kamu menguji konektivitas ke port TCP/IP tertentu, tetapi cmdlet ini tidak tersedia di Windows 7 bahkan saat menjalankan versi WMF terbaru.

$ads={2}


Pada sebagian besar sistem Windows, pengguna akan memiliki ketersediaan dua lingkungan PowerShell, konsol PowerShell dan PowerShell ISE (Integrated Scripting Environment). Konsol PowerShell tampak seperti baris perintah tradisional, tetapi dengan bobot penuh PowerShell di belakangnya. Nama variabel, loop, penyelesaian tab, dan pemipaan semuanya tersedia dari konsol PowerShell. Untuk penggunaan yang lebih mendalam (seperti pembuatan skrip), PowerShell ISE menawarkan penyelesaian tab, penyorotan kode, dan kemampuan penyelesaian kode Intellisense Microsoft untuk membantu kamu membuat dan menguji kode PowerShell kamu. PowerShell ISE juga memungkinkan kamu untuk bekerja dengan beberapa skrip PowerShell secara bersamaan menggunakan navigasi tab.


PowerShell cmdlets


Dasar dari perintah PowerShell adalah cmdlet. Microsoft membuat beberapa strategi desain saat mendesain cmdlet PowerShell. Pertama adalah kemampuan untuk dengan mudah menyimpulkan nama cmdlet, atau setidaknya membuatnya mudah ditemukan. Perintah PowerShell, atau cmdlet, juga dirancang agar mudah digunakan dengan sintaks standar, membuatnya mudah digunakan secara interaktif dari baris perintah atau untuk membuat skrip yang kuat.


Cmdlet PowerShell menggunakan format Verb-Noun seperti pada Get-Service, Stop-Service, atau Import-Csv. Bagian kata kerja dari nama cmdlet menunjukkan tindakan yang akan dilakukan pada kata benda. Biasanya, cmdlet yang digunakan untuk meminta informasi menggunakan kata kerja Get, seperti halnya dengan Get-Process atau Get-Content. Perintah yang digunakan untuk mengubah sesuatu biasanya dimulai dengan kata kerja Set, sedangkan perintah yang menambahkan entitas baru ke sesuatu sering dimulai dengan Tambah atau Baru. Dalam banyak kasus, kombinasi kata kerja-kata benda ini dapat ditebak atau diprediksi karena konvensi penamaan standar.


Penamaan cmdlet standar bukan satu-satunya aspek PowerShell yang dirancang untuk meningkatkan kegunaan baris perintah. Parameter yang biasa digunakan di seluruh PowerShell juga menggunakan nama standar. Salah satu contohnya adalah parameter -ComputerName, yang memungkinkan cmdlet dieksekusi terhadap satu atau lebih komputer jarak jauh. Demikian juga, -Credential digunakan untuk menyediakan objek kredensial, yang berisi kredensial login pengguna, untuk menjalankan perintah sebagai pengguna tertentu.


Modul PowerShell


Saat menggunakan PowerShell melalui konsol, alias dapat digunakan untuk cmdlet dan parameter untuk menghemat penekanan tombol dan mempersingkat panjang keseluruhan perintah (keuntungan yang tidak boleh diabaikan saat menggabungkan perintah). Alias ​​​​Cmdlet tidak selalu menggunakan konvensi penamaan standar, namun mereka sering mencerminkan utilitas baris perintah tradisional.


Di PowerShell, alias DIR, CD, DEL, dan CLS masing-masing sesuai dengan cmdlet Get-ChildItem, Set-Location, Remove-Item, dan Clear-Host. Alias ​​parameter dapat bekerja dengan dua cara: mereka dapat menggunakan alias yang telah ditentukan sebelumnya yang ditentukan oleh cmdlet, atau alias dengan memasukkan karakter yang cukup untuk menghasilkan kecocokan unik di antara parameter yang didukung cmdlet.


Mengelola file dan folder


Terlepas dari niche kamu di industri, kemungkinan beberapa bagian dari kesibukan harian kamu melibatkan pengelolaan file dan folder dalam beberapa cara. Baik itu memindahkan folder ke lokasi lain di server, mengarsipkan file log, atau mencari file besar; hampir setiap administrator sistem menghabiskan sebagian waktunya untuk mengelola file dan folder. Dalam kasus di mana tugas berulang diulang pada beberapa file, atau kumpulan tugas yang sama dijalankan berulang kali, otomatisasi melalui PowerShell dapat menjadi penghemat waktu nyata.


Menemukan file dan folder Salah satu alat baris perintah pertama yang akan dipelajari administrator di masa lalu komputer adalah perintah dir. Bagi mereka yang baru mengenal permainan, dir akan mencantumkan file dan folder yang terdapat dalam direktori yang ditentukan. PowerShell menampilkan perintah serupa dalam bentuk cmdlet Get-ChildItem. Get-ChildItem memungkinkan kamu untuk dengan cepat membuat daftar file dalam direktori dengan cara yang kemudian kamu dapat bertindak pada file-file ini baik melalui perintah pipa atau dengan menetapkan output ke variabel.


Pada dasarnya, Get-ChildItem dapat digunakan hanya dengan menyediakan jalur, baik melalui pipa, menggunakan parameter -Path, atau segera mengikuti nama cmdlet. Untuk menyetel respons yang dikembalikan oleh Get-ChildItem, penting untuk melihat beberapa parameter yang disediakan oleh cmdlet.


Parameter -Filter adalah salah satu cara kamu dapat mencari file. Secara default, cmdlet Get-ChildItem hanya mengembalikan turunan langsung dari direktori target. Fungsionalitas ini dapat diperluas menggunakan sakelar -Recurse, yang secara rekursif mencari direktori yang terdapat dalam folder saat ini.


Di PowerShell 4.0 Get-ChildItem menambahkan kemampuan untuk membatasi hasil ke file atau folder dengan menggunakan sakelar –File atau –Directory. Versi PowerShell sebelumnya harus menyalurkan hasilnya ke Where-Object, memfilter pada properti PSIsContainer untuk membuat penentuan ini. Contoh kedua teknik yang digunakan untuk mengembalikan folder yang ada di C:Users ditampilkan di sini:


Get-ChildItem C:Pengguna -Direktori Get-ChildItem C:Pengguna | Where-Object {$_.PSIsContainer –eq $true}


Untuk menemukan file tersembunyi atau sistem, sakelar -Force harus digunakan. Get-ChildItem di PowerShell 4.0 dan di atasnya juga dapat digunakan untuk mengembalikan hanya file yang disembunyikan, hanya baca, atau file sistem menggunakan sakelar -Hidden, -ReadOnly, dan -System masing-masing. Fungsionalitas yang sama dapat dicapai di versi sebelumnya dengan memfilter properti Mode menggunakan Where-Object:


Get-ChildItem C:Pengguna | Dimana-Objek {$_.Mode -seperti '*R*'}


Memeriksa apakah ada file


Seringkali saat bekerja dengan file, yang perlu kita ketahui adalah apakah file ada atau jalur folder valid. PowerShell menawarkan cmdlet untuk melakukan validasi ini dalam bentuk Test-Path, yang mengembalikan nilai benar atau salah.


Test-Path sering berguna sebagai langkah pencegahan sebelum mencoba menyalin atau menghapus file tertentu.


Mengcopy, Memove (memindahkan), dan Menghapus File


Seperti yang kamu harapkan, PowerShell sepenuhnya mampu melakukan operasi file standar pada banyak objek dalam satu lintasan. Cmdlet Copy-Item dapat digunakan untuk menyalin satu atau lebih file atau folder dari satu lokasi, yang diidentifikasi oleh parameter -Path, ke lokasi yang ditentukan oleh opsi -Destination.


Demikian juga, cmdlet Move-Item digunakan saat merelokasi file atau folder. Saat struktur folder sedang disalin atau dipindahkan, sakelar -Recurse harus digunakan agar cmdlet melakukan tindakan pada folder dan isinya. Dalam beberapa kasus, sakelar -Force diperlukan, seperti ketika file hanya-baca sedang ditimpa oleh operasi penyalinan.


File dan folder dapat dihapus menggunakan cmdlet Remove-Item. Seperti tema dengan banyak cmdlet yang dibahas di sini, sakelar -Force harus digunakan ketika file tersembunyi atau hanya-baca ditemukan, dan -Recurse harus digunakan saat menghapus folder dan isinya.


Menggunakan PowerShell -WhatIf dan -Confirm


Dikatakan tentang skrip yang memungkinkan orang melakukan hal-hal bodoh dengan sangat cepat. Sebelum kamu menarik pelatuk pada operasi penghapusan besar, manfaatkan sakelar -WhatIf yang ditawarkan untuk sebagian besar cmdlet yang dibahas di sini.


Sakelar -WhatIf memungkinkan kamu melihat apa yang akan terjadi jika kamu benar-benar menjalankan skrip atau perintah, tanpa potensi efek negatif dari penghapusan data bisnis penting. Perlu juga dicatat bahwa -WhatIf tidak terbatas pada operasi file, ini banyak digunakan di seluruh PowerShell.


Untuk skrip yang ingin kamu jalankan secara manual atau lebih buruk, jalankan bawahan secara manual, pertimbangkan untuk menggunakan -Confirm. Ini memungkinkan kamu untuk meminta interaksi pengguna sebelum operasi benar-benar terjadi. Seringkali ini lebih baik daripada mengasumsikan semuanya sudah siap (pencadangan file selesai, replikasi dinonaktifkan, dll.) sebelum operasi file besar dimulai.


Objek, pemipaan, pemfilteran, dan lainnya


Kunci PowerShell, selain penamaan standar dan fitur lainnya, yang membuatnya intuitif, adalah bahwa banyak cmdlet berbasis objek. Dengan bekerja dengan objek, PowerShell memungkinkan kamu dengan mudah membuat perubahan pada beberapa item dengan satu baris kode, membuat perubahan pada subset item tertentu dalam ribuan, atau menggunakan objek ini untuk mengumpulkan data atau melakukan tindakan pada objek terkait lainnya. objek PowerShell


Objek, bagi mereka yang tidak akrab dengan terminologi, mengacu pada item yang berisi banyak atribut atau properti; seperti string karakter, daftar informasi, dan nilai numerik. Contoh objek yang baik adalah proses Windows, diambil menggunakan cmdlet Get-Process, yang berisi beberapa properti yang menunjukkan nama yang dapat dieksekusi, prioritas, penggunaan CPU, dan penggunaan RAM.


Cmdlet Get-Member dapat digunakan untuk menjelajahi objek dan properti serta metode anggotanya. Get-Member tidak hanya akan menunjukkan properti objek dan tipe data yang dikandungnya, tetapi juga akan memberi kamu tipe objek, yang pada gilirannya dapat digunakan untuk menemukan cmdlet lain, yang dapat menerima tipe objek.


Perpipaan


PowerShell memungkinkan kamu memanfaatkan cmdlet dan objek melalui teknik yang dikenal sebagai pemipaan. Menggunakan karakter pipa (|), kamu dapat dengan cepat dan mudah memilih objek dan kemudian melakukan tindakan pada objek tersebut. Contoh sempurna dari pemipaan adalah mematikan proses tertentu menggunakan Get-Process java | Berhenti-Proses. Demikian juga, kamu dapat memulai ulang layanan menggunakan satu baris seperti spooler Get-Service | Restart-Layanan.


Seringkali cmdlet dengan kata benda yang sama akan digunakan saat pemipaan, tetapi tekniknya tidak terbatas pada cmdlet dengan kata benda yang sama. Menggunakan tipe objek yang dikembalikan menggunakan Get-Member, kamu dapat menemukan cmdlet lain yang dapat digunakan untuk menerima perintah yang disalurkan. Cmdlet Get-Command dengan tipe objek yang ditentukan menggunakan -ParameterType akan mengembalikan daftar cmdlet yang dapat menerima tipe objek yang ditunjuk.


Pemfilteran


Ada seluruh daftar cmdlet di PowerShell yang digunakan untuk melakukan pengangkatan berat dengan objek, khususnya yang memiliki kata benda Objek. Banyak dari cmdlet ini adalah salah satu cmdlet yang paling umum digunakan, sementara yang lain digunakan untuk tugas yang lebih khusus.


Cmdlet Where-Object memungkinkan kamu membatasi atau memfilter objek yang diteruskan ke pipeline. Misalnya, perintah Get-Service | Where-Object {$_.DependentServices -ne $null} akan mengembalikan daftar layanan yang memiliki dependensi. Sintaks yang digunakan dengan Where-Object perlu diperhatikan dan berlaku untuk beberapa cmdlet objek lain juga. Kurung berlekuk-lekuk digunakan untuk menggambarkan blok kode di PowerShell, dan dalam hal ini menunjukkan kondisi yang diterapkan ke objek dalam pipa. Variabel otomatis $_ digunakan untuk menunjukkan contoh saat ini dari objek yang sedang dievaluasi. Operator perbandingan PowerShell menggunakan pemformatan dengan tanda hubung, jadi -eq (sama dengan) digunakan untuk menemukan kecocokan yang tepat dengan kata "Berhenti" dalam contoh kita.


Untuk penggunaan interaktif dalam konsol PowerShell, menggunakan alias dapat menghemat waktu dan tenaga. Cmdlet Where-Object menggunakan tanda tanya (?). PowerShell 3.0 bahkan memungkinkan kamu untuk lebih menyederhanakan sintaksis Where-Object kamu dengan menghilangkan kebutuhan akan blok skrip dan variabel otomatis dari pipeline. Di PowerShell 3.0 perintah ini setara dengan yang disediakan di atas: Get-Service | ? DependentServices -ne $null.


Bertindak pada objek


ForEach-Object digunakan untuk melakukan tindakan pada setiap instance objek. Dari perspektif sintaks, ForEach-Object sangat mirip dengan Where-Object, dengan blok skrip dan variabel otomatis digunakan dengan kedua cmdlet. Di mana keunggulan ForEach-Object mampu melakukan tugas terhadap setiap instance objek yang terlalu rumit untuk pemipaan sederhana. Misalnya kamu mungkin perlu membuat daftar keamanan file untuk berbagi file, dalam hal ini kamu bisa menggunakan pipa cmdlet Get-ChildItem ke ForEach-Object, dan kemudian menggunakan Get-ACL terhadap parameter nama lengkap ($_.Nama Lengkap) ke daftar keamanan file untuk daftar file.


Seperti Where-Object, cmdlet ForEach-Object dapat disederhanakan menggunakan alias, ditunjukkan dengan tanda persen (%). Selain itu, sintaks PowerShell 3.0 didukung untuk memberikan penggunaan yang lebih intuitif.


Meskipun memfilter objek atau melakukan tindakan pada instance objek adalah tugas umum, sebaiknya hindari Where-Object dan ForEach-Object jika memungkinkan. Banyak cmdlet menawarkan opsi -Filter atau parameter lain yang dapat membantu membatasi jumlah hasil tanpa harus melihat setiap instance objek, biasanya menghasilkan peningkatan kinerja yang signifikan.


Demikian juga, ForEach-Object melakukan tindakan individual pada setiap instance dari objek yang disalurkan. Jika memungkinkan, objek harus disalurkan langsung ke cmdlet yang dapat melakukan tindakan yang diperlukan pada seluruh objek, tanpa harus menghitung setiap item di dalam objek.


Operator Perbandingan dan Logika Bersyarat


Administrator sistem membuat keputusan setiap hari mengenai tugas pemeliharaan apa yang harus dilakukan di server berdasarkan berbagai kriteria. Mengotomatiskan tugas administratif berulang dengan PowerShell sering kali melibatkan penggunaan logika untuk mereplikasi proses pengambilan keputusan ini. Beberapa teknik dapat digunakan untuk mencapai hasil yang diinginkan dengan menggunakan perbandingan, filter, dan logika kondisional.


Operator perbandingan PowerShell


kamu tidak akan jauh-jauh dalam membuat skrip PowerShell tanpa melakukan logika kondisional, yang dimulai dengan membandingkan nilai. Kemampuan untuk memeriksa apakah ada pengguna, apakah file telah dibuat, atau jika satu komputer dapat terhubung ke komputer lain, semuanya memerlukan perbandingan nilai. Masalah besar di PowerShell berkaitan dengan sintaks: daripada menggunakan operator perbandingan tradisional seperti < or >PowerShell menggunakan -lt atau -gt untuk melakukan perbandingan.


Beberapa operator perbandingan paling sering digunakan dengan nilai numerik, meskipun mereka memiliki tempat ketika bekerja dengan tanggal atau nomor versi dan jenis variabel lainnya juga. Tabel berikut berisi operator perbandingan yang paling umum digunakan untuk membandingkan angka.



Saat membandingkan dengan string teks -eq dapat digunakan saat kecocokan persis diperlukan. Operator -match dapat digunakan saat mencari bagian dari string, atau -like dapat digunakan untuk melakukan pencarian wildcard. PowerShell juga dapat digunakan untuk mencari nilai tertentu dalam array dengan menggunakan -in, -notin, -contains, atau -notcontains.


Dalam kasus di mana lebih dari satu kondisi harus dipenuhi, pernyataan kurung dapat digunakan untuk mengelola kelompok kondisi. Contoh berikut dapat digunakan untuk memilih proses yang terkait dengan berbagai browser web:


Get-Childitem | Where-Object {($_.Name -eq "iexplore") -atau ($_.Name -eq "chrome") -or ($_.Name -eq "firefox")}


PowerShell Where-Object


Banyak cmdlet PowerShell umum mengembalikan daftar panjang nilai yang tidak banyak digunakan secara keseluruhan. Menggunakan Where-Object memungkinkan kamu membatasi hasil dengan cepat ke kondisi yang kamu tentukan dalam ScriptBlock. Contoh berikut mencantumkan file di profil pengguna saat ini yang memiliki bit arsip yang disetel:


Get-ChildItem $env:USERPROFILE -Recurse -Force | Where-Object {$_.Mode -like"*a*"}


Contoh ini menunjukkan penggunaan variabel default $_, yang digunakan untuk menunjukkan catatan saat ini sedang diteruskan dari pipa. PowerShell 4 memungkinkan kamu menggunakan Where-Object menggunakan alias seperti ? atau Dimana, dan menerima notasi jalan pintas untuk kondisi juga. Contoh ini secara fungsional identik dengan yang di atas:


Get-ChildItem $env:USERPROFILE -Recurse -Force | ? Mode -like "*a*"


Pernyataan if, elseIf, dan else


Salah satu metode yang lebih umum untuk mengontrol aliran skrip kamu dan melakukan logika kondisional adalah melalui pernyataan if. Dengan menetapkan terlebih dahulu kriteria yang harus dipenuhi, dan kemudian tindakan yang harus diambil, profesional TI dapat mengotomatiskan tindakan administratif yang kompleks. Di PowerShell, seperti dalam kebanyakan bahasa pemrograman, pernyataan if dapat digunakan dengan pernyataan elseif dan else, yang memungkinkan kamu menangani beberapa skenario.


Pernyataan if sederhana membutuhkan kata kunci if, diikuti dengan kondisi dalam tanda kurung. Ketika kondisi dievaluasi sebagai benar, kode yang terkandung dalam blok skrip berikutnya kemudian diproses; jika salah itu hanya dilewati. Contoh berikut menunjukkan pernyataan if sederhana yang menguji konektivitas internet:


if (Test-connection www.google.com -Quiet) { Write-Host "Internet Connection is Live" }


Dengan pernyataan elseif kamu dapat menambahkan kondisi tambahan ke pernyataan if tunggal. Ini berbeda dari pernyataan multiple if yang hanya menggunakan kondisi pertama yang terpenuhi. Pernyataan lain ditempatkan di akhir pernyataan if untuk melakukan tindakan jika tidak ada kondisi sebelumnya yang terpenuhi. Contoh kondisi yang lebih kompleks dengan blok if, elseif, dan else adalah di bawah ini:


if (Test-Connection www.google.com -Quiet) { Write-Host "Internet Connection is Live." } elseif (Test-Connection 192.168.0.1 -Quiet) { Write-Host "Network coonnectivity is unavailable." } else { Write-Host "connectivity is unavailable." }


Ganti pernyataan

Seperti pernyataan if, switch memungkinkan kamu untuk melakukan serangkaian perintah ketika kriteria tertentu terpenuhi. Perbedaan besar antara if dan switch adalah bahwa pernyataan switch mengevaluasi satu set kriteria terhadap banyak kemungkinan, daripada setiap pernyataan mengevaluasi serangkaian kriteria yang berpotensi tidak terkait.


Pernyataan switch dimulai dengan kata kunci switch diikuti dengan ekspresi yang akan dievaluasi. Blok skrip yang diapit tanda kurung kurawal mengikuti ekspresi yang dievaluasi dan berisi kecocokan potensial yang akan ditindaklanjuti. Masing-masing kecocokan ini diikuti oleh blok skrip, yang menentukan tindakan yang harus diambil ketika kondisi terpenuhi. Untuk melakukan tindakan terhadap kriteria yang tidak cocok, kata kunci default dapat digunakan. Contoh ini menggunakan cmdlet Get-Date untuk membaca hari dalam seminggu dan mengembalikan apakah itu Hari Kerja atau Akhir Pekan:


switch ((Get-Date).DayOfWeek) {     "Saturday" {"Weekend"}     "Sunday" {"Weekend"}     Default {"Weekday"} }


Contoh sebelumnya dapat disederhanakan lebih lanjut dengan menggunakan opsi -Wildcard seperti yang ditunjukkan di bawah ini. Menggunakan wildcard dengan pernyataan switch memberi kamu metode yang lebih efisien dalam melakukan tindakan bersyarat.


switch -Wildcard ((Get-Date).DayOfWeek) {     "S*" {"Weekend"}     Default {"Weekday"} }


Menggunakan variabel, array, dan tabel hash


Windows PowerShell adalah tentang membuat Profesional TI lebih efisien dalam tugas sehari-hari mereka. PowerShell cukup intuitif sehingga admin tingkat pemula atau menengah dapat mulai mempelajari bahasa, menggunakan cmdlet dari konsol, dan bahkan mulai menulis skrip yang cukup sederhana.


Setelah skrip PowerShell kamu mulai menjadi lebih kompleks, kamu harus mulai bekerja dengan aspek PowerShell yang akan membawa kamu kembali ke kelas pemrograman yang kamu ambil di perguruan tinggi. Variabel khususnya sangat penting untuk scripting, karena memungkinkan kamua untuk melewatkan informasi antar bagian dari script kamu.


Menetapkan dan Merujuk Variabel PowerShell


kamu mungkin akrab dengan konsep variabel pada tingkat tertentu, apakah itu dari pengalaman sebelumnya dalam pemrograman atau dari matematika. Nilai dapat ditetapkan ke variabel untuk mereferensikan variabel itu di seluruh skrip PowerShell kamu. Penggunaan variabel memungkinkan kamu untuk memastikan nilai tetap konsisten di seluruh skrip, membuatnya lebih mudah untuk mengubah nilai nanti (baik secara manual atau terprogram), dan umumnya membuat skrip Anda jauh lebih mudah dibaca.


Nama variabel di PowerShell dimulai dengan $, seperti pada $UserName, dan nilai ditetapkan menggunakan =, like $UserName = "John Smith" or $UserAge = 42. PowerShell mendukung sejumlah besar tipe variabel; seperti string teks, bilangan bulat, desimal, array, dan bahkan tipe lanjutan seperti nomor versi atau alamat IP.


Secara default, PowerShell akan mencoba menebak tipe variabel yang akan digunakan, tetapi ini dapat diterapkan dengan menunjukkan tipe sebelum nama variabel seperti pada [int32]$UserAge=40. Dalam kasus di mana nilai yang ditetapkan tidak cocok dengan jenis yang diberlakukan, nilai akan dikonversi jika memungkinkan, atau kesalahan akan dihasilkan.


Kadang-kadang muncul kebutuhan untuk secara dinamis menetapkan atau memodifikasi nilai variabel daripada hanya menetapkan nilai statis. Ini bisa melibatkan melakukan operasi matematika pada angka atau menambahkan teks ke string. Nilai numerik dapat ditetapkan atau dimodifikasi menggunakan operator matematika standar seperti +, -, *, dan / seperti pada contoh berikut:


$secondsPerDay = 24 * 60 * 60 $weeksPerYear = 365 / 7


Nilai numerik juga dapat ditambah atau dikurangi menggunakan ++ atau – tanpa harus menambah atau mengurangi 1 dari nilai. Kedua contoh ini memiliki efek yang sama, meningkatkan nilai variabel sebesar 1:


$myNumber = $myNumber + 1 $myNumber++


PowerShell menggunakan operator tambahan (+) untuk menggabungkan, atau menautkan string teks bersama-sama. Versi PowerShell yang lebih baru juga mendukung penyisipan variabel ke dalam string yang dikutip ganda (sebagai lawan dari tanda kutip tunggal), meskipun teknik ini harus digunakan dengan hati-hati untuk memaksimalkan kompatibilitas mundur.


$website = "www.business.com" $myString = "My favorite website is" + $website $myString = "My favorite website is $website"


Variabel juga dapat digunakan untuk menyimpan informasi yang dikembalikan dari cmdlet. Ini sangat berguna jika skrip kamu meminta kumpulan informasi yang sama untuk digunakan beberapa kali. Daripada menjalankan cmdlet yang sama beberapa kali, kamu dapat menetapkannya ke variabel dan menggunakannya nanti dalam skrip sesering yang kamu mau.


Array dan tabel hash PowerShell


Array paling sering digunakan untuk memuat daftar nilai, seperti daftar nama pengguna atau kota. PowerShell menawarkan beberapa bentuk array, yang masing-masing dapat ditetapkan dan diakses dengan cara yang berbeda. Untuk keperluan artikel ini kita akan fokus pada dua yang paling umum digunakan. Array PowerShell dasar dapat ditentukan dengan membungkus daftar item dalam tanda kurung dan mengawali dengan @symbol seperti pada $nameArray = @("John","Joe",,"Mary"). Item dalam array dapat diakses menggunakan indeks numeriknya, dimulai dengan 0, dalam tanda kurung siku seperti: $nameArray[0].


Bentuk array yang lebih maju, yang dikenal sebagai hashtable, diberi tanda kurung berlekuk-lekuk yang diawali dengan tanda @. Sementara array biasanya (tetapi tidak selalu) digunakan untuk berisi data serupa, tabel hash lebih cocok untuk data terkait (daripada serupa). Masing-masing item dalam tabel hash diberi nama daripada diberi indeks numerik seperti pada $user=@{FirstName="John"; LastName = "Smith"; MiddleInitial="J"; Usia=40}. Item dalam tabel hash mudah diakses menggunakan variabel dan nama kunci seperti pada $user.LastName.


Variabel default


Satu hal terakhir yang perlu diperhatikan tentang variabel di PowerShell adalah bahwa ada sejumlah variabel default yang secara otomatis memiliki nilai yang ditetapkan. Ada beberapa variabel yang diawali dengan awalan "$env:" yang dapat dimanfaatkan untuk mendapatkan hal-hal seperti jalur ke direktori Windows, folder temp, nama pengguna atau domain saat ini, dan banyak jenis informasi sistem lainnya. Daftar lengkap variabel $env dapat diperoleh dengan menggunakan perintah berikut:


Dapatkan-ChildItem env:


Beberapa variabel tambahan lainnya tersedia seperti $Home dan $PsHome, yang memberi kamu jalur masing-masing ke direktori home pengguna dan direktori home PowerShell. Variabel $Host mengembalikan objek yang berisi informasi tentang lingkungan PowerShell saat ini, apakah itu PowerShell ISE atau konsol. Terakhir, $PSVersionTable berisi informasi tentang versi PowerShell yang terinstal, termasuk $PSVersionTable.PSVersion.Major yang menunjukkan versi PowerShell utama yang tersedia pada host yang menjalankan skrip.


Nilai PowerShell untuk nilai Boolean True dan False secara otomatis ditetapkan ke variabel default $true dan $false.


Mengelola server dan sesi jarak jauh


Seperti banyak alat administrasi sistem, PowerShell hanya memberikan begitu banyak manfaat bagi organisasi kamu tanpa memanfaatkan banyak sistem. Dalam sebagian besar skenario, ini melibatkan eksekusi cmdlet atau skrip PowerShell sedemikian rupa sehingga tindakan dilakukan terhadap sistem jarak jauh.


Mari kita lihat beberapa opsi berbeda yang dibawa PowerShell ke meja dalam cara manajemen jarak jauh. Kami juga akan meninjau beberapa persyaratan yang diperlukan untuk menggunakan fungsi ini, dan beberapa tip untuk mendapatkan hasil maksimal dari manajemen jarak jauh PowerShell.


Mengelola server jarak jauh dengan PowerShell


Metode paling dasar dalam menggunakan PowerShell untuk melakukan tugas manajemen terhadap server jarak jauh, atau komputer Windows secara umum, adalah menggunakan parameter -ComputerName. Kami membahas cara menemukan cmdlet yang menerima parameter -ComputerName dalam posting kami tentang penggunaan fitur bantuan PowerShell.


Banyak cmdlet PowerShell standar yang akan kamu gunakan setiap hari (Get-Process, Get-Service, Get-EventLog, dll.) memungkinkan kamu melakukan tindakan terhadap komputer jarak jauh dengan cara ini. Perlu juga dicatat bahwa -ComputerName akan menerima beberapa nama host, memungkinkan kamu untuk secara bersamaan menargetkan daftar komputer tanpa harus menjalankan cmdlet beberapa kali. Mengelola komputer jarak jauh menggunakan metode ini mengabaikan beberapa persyaratan untuk sesi jarak jauh PowerShell yang persisten.


Aktifkan sesi jarak jauh PowerShell


Kumpulan fitur besar yang diperkenalkan di PowerShell versi 2.0 adalah fitur remoting. Menggunakan WinRM (Windows Remote Management) PowerShell remote memungkinkan kamu membuat sesi jarak jauh ke komputer. Fungsionalitasnya mirip dengan alat administrasi jarak jauh yang sudah dikenal seperti telnet atau SSH, tetapi menggunakan port dan protokol standar industri seperti HTTP dan SOAP.


Meskipun sebagian besar sistem Windows di jaringan kamu harus menginstal setidaknya PowerShell 2.0 (ini adalah default pada Windows 7 dan Windows Server 2008), remote PowerShell tidak diaktifkan secara default hingga Windows Server 2012. Untuk mengaktifkan PowerShell remoting, layanan WinRM harus dimulai dan diatur untuk memulai secara otomatis, dan aturan firewall harus diaktifkan untuk memungkinkan komunikasi ke server.


Untungnya, remote PowerShell dapat diaktifkan dalam satu langkah menggunakan cmdlet Enable-PSRemoting dengan sakelar -Force dari prompt PowerShell yang ditinggikan. Karena Windows Server 2012 dan yang lebih baru memiliki PowerShell remoting yang diaktifkan secara default, tidak perlu menjalankan Enable-PSRemoting kecuali telah dinonaktifkan karena alasan tertentu.


Mengapa menggunakan sesi jarak jauh?


Ada beberapa alasan signifikan mengapa sesi jarak jauh harus digunakan dalam beberapa skenario daripada cmdlet individu terhadap komputer jarak jauh, yang pertama adalah kinerja. Ketika kamu menjalankan cmdlet seperti Get-Service terhadap sepuluh komputer yang berbeda, komputer lokal harus menjalankan perintah dan memproses informasi dari setiap komputer. Ketika sesi jarak jauh dimanfaatkan, setiap komputer jarak jauh menjalankan perintah, menyebarkan beban kerja ke sepuluh komputer. Setelah kamu mulai berbicara tentang skrip PowerShell yang berjalan melawan ratusan atau ribuan komputer, kinerja menjadi salah satu prioritas utama kamu.


Alasan lain untuk menggunakan sesi PowerShell jarak jauh adalah kemampuan untuk menggunakan beberapa cmdlet dalam sesi yang sama, memungkinkan kamu untuk melakukan beberapa tindakan terhadap setiap server, atau bahkan menjalankan seluruh skrip dari jarak jauh. Potensi untuk menggunakan sesi jarak jauh dengan cara ini berkisar dari mengotomatisasi kinerja inventaris perangkat lunak, hingga memulai ulang layanan secara berkala di seluruh pusat data, atau proses apa pun yang dapat kamu impikan.


Membuat sesi jarak jauh


Sementara manfaat menggunakan sesi PowerShell jarak jauh jelas, mereka bisa sedikit lebih rumit untuk digunakan daripada sekadar menggunakan cmdlet dengan parameter -ComputerName. Cara paling sederhana untuk memulai sesi jarak jauh adalah menggunakan cmdlet Invoke-Command. Invoke-Command, bersama dengan parameter -ComputerName dan -ScriptBlock, memungkinkan kamu untuk menentukan server jarak jauh untuk dikelola dan perintah administratif untuk dijalankan dari jarak jauh.


Untuk skenario jarak jauh PowerShell yang lebih komprehensif, kamu dapat mengelola sesi sebagai entitasnya sendiri dengan terlebih dahulu membuat sesi menggunakan cmdlet PSSession Baru. Keuntungan menggunakan New-PSSession adalah sesi tetap ada di beberapa instance Invoke-Command, memungkinkan kamu meneruskan variabel dan objek ke cmdlet lain di skrip kamu. Sesi persisten dapat dibuat menggunakan cmdlet New-PSSession dan menetapkannya ke variabel, yang nantinya dapat direferensikan menggunakan Invoke-Command, dan akhirnya ditutup menggunakan Remove-PSSession. Contoh ini mengilustrasikan penggunaan sesi persisten, yang tanpanya instance Invoke-Command kedua akan gagal:


$s = New-PSSession -ComputerName "SRV1" Invoke-Command -Session $s -ScriptBlock {$services = Get-Service} Invoke-Command -Session $s -ScriptBlock {$services | Where-Object {$_.Status -eq "Stopped"}} Delete-PSSession $s


Sesi dan kredensial


Dalam contoh yang diberikan di atas, kredensial pengguna saat ini digunakan untuk membuat sesi jarak jauh dan menjalankan perintah terhadap server jarak jauh. Baik cmdlet Invoke-Command dan New-PSSession menerima objek kredensial PowerShell, yang dibuat menggunakan cmdlet New-PSCredential. Manfaat menggunakan metode ini adalah bahwa administrator dapat meminta kredensial diberikan untuk mendukung tindakan spesifik yang menargetkan server jarak jauh.


PowerShell menyediakan banyak metode untuk secara efisien mengelola satu server lokal atau ribuan server di seluruh dunia. Menjadi akrab dengan perangkat PowerShell bisa menjadi penting dalam tetap menjadi sumber daya yang berharga di tempat kerja kamu.


(H/S)


Referensi :

- Business.com

Post a Comment

Lebih baru Lebih lama