Bab 1 - Mulai menggunakan PowerShell
Bab ini berfokus pada menemukan dan meluncurkan PowerShell dan memecahkan poin-poin rasa sakit awal yang dialami pengguna baru dengan PowerShell. Ikuti dan telusuri contoh dalam bab ini di komputer lingkungan lab Anda.
Apa itu PowerShell?
Windows PowerShell adalah shell baris perintah dan lingkungan pembuatan skrip yang mudah digunakan untuk mengotomatiskan tugas administratif sistem berbasis Windows. Windows PowerShell telah diinstal sebelumnya pada semua versi modern sistem operasi Windows.
Tempat menemukan PowerShell
Cara term mudah untuk menemukan PowerShell di Windows 11 adalah dengan mengetik PowerShell
ke bilah pencarian, seperti yang ditunjukkan pada Gambar 1-1. Perhatikan bahwa ada empat pintasan berbeda untuk Windows PowerShell.
Pintasan Windows PowerShell pada Windows versi 64-bit:
- Windows PowerShell
- Windows PowerShell ISE
- Windows PowerShell (x86)
- Windows PowerShell ISE (x86)
Pada Windows versi 64-bit, Anda memiliki konsol Windows PowerShell versi 64-bit dan Windows PowerShell Integrated Scripting Environment (ISE) dan versi 32-bit masing-masing, seperti yang ditunjukkan oleh akhiran (x86) pada pintasan.
Catatan
Windows 11 hanya dikirim sebagai sistem operasi 64-bit. Tidak ada Windows 11 versi 32-bit. Namun, Windows 11 menyertakan Windows PowerShell versi 32-bit dan WINDOWS PowerShell ISE.
Anda hanya memiliki dua pintasan jika Menjalankan Windows versi 32-bit yang lebih lama. Pintasan tersebut tidak memiliki akhiran (x86) tetapi adalah versi 32-bit.
Sebaiknya gunakan Windows PowerShell versi 64-bit jika Anda menjalankan sistem operasi 64-bit kecuali Anda memiliki alasan khusus untuk menggunakan versi 32-bit.
Bergantung pada versi Windows 11 apa yang Anda jalankan, Windows PowerShell mungkin terbuka di Terminal Windows.
Microsoft tidak lagi memperbarui POWERShell ISE. ISE hanya berfungsi dengan Windows PowerShell 5.1. Visual Studio Code (VS Code) dengan ekstensi PowerShell berfungsi dengan kedua versi PowerShell. Visual Studio Code dan ekstensi PowerShell tidak dikirim di Windows. Instal Visual Studio Code dan ekstensi di komputer tempat Anda membuat skrip PowerShell. Anda tidak perlu menginstalnya di semua komputer tempat Anda menjalankan PowerShell.
Cara meluncurkan PowerShell
Saya menggunakan tiga akun pengguna Direktori Aktif yang berbeda di lingkungan produksi yang saya dukung. Saya mencerminkan akun-akun tersebut di lingkungan lab yang digunakan dalam buku ini. Saya masuk ke komputer Windows 11 saya sebagai pengguna domain tanpa hak administrator domain atau lokal.
Luncurkan konsol PowerShell dengan mengklik pintasan Windows PowerShell , seperti yang ditunjukkan pada Gambar 1-1. Perhatikan bahwa bilah judul konsol mengatakan Windows PowerShell, seperti yang ditunjukkan pada Gambar 1-2.
Beberapa perintah berjalan dengan baik saat Anda menjalankan PowerShell sebagai pengguna biasa. Namun, PowerShell tidak berpartisipasi dalam Kontrol Akses Pengguna (UAC). Itu berarti tidak dapat meminta elevasi untuk tugas yang memerlukan persetujuan administrator.
Catatan
UAC adalah fitur keamanan Windows yang membantu mencegah kode berbahaya berjalan dengan hak istimewa yang ditinggikan.
Saat masuk sebagai pengguna biasa, PowerShell mengembalikan kesalahan saat Anda menjalankan perintah yang memerlukan elevasi. Misalnya, menghentikan layanan Windows:
Stop-Service -Name W32Time
Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to
the following error: Cannot open W32Time service on computer '.'.
At line:1 char:1
+ Stop-Service -Name W32Time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (System.ServiceProcess.ServiceCon
troller:ServiceController) [Stop-Service], ServiceCommandException
+ FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Comm
ands.StopServiceCommand
Solusinya adalah menjalankan PowerShell yang ditinggikan sebagai pengguna yang merupakan administrator lokal. Itulah cara saya mengonfigurasi akun pengguna domain kedua saya. Mengikuti prinsip hak istimewa paling sedikit, akun ini tidak boleh menjadi administrator domain atau memiliki hak istimewa yang ditinggikan di domain.
Untuk memulai PowerShell dengan hak yang ditinggikan, klik kanan pintasan Windows PowerShell dan pilih Jalankan sebagai administrator, seperti yang ditunjukkan pada Gambar 1-3.
Windows meminta kredensial kepada Anda karena Anda masuk ke Windows sebagai pengguna biasa. Masukkan kredensial pengguna domain Anda yang merupakan administrator lokal, seperti yang ditunjukkan pada Gambar 1-4.
Perhatikan bahwa bilah judul jendela konsol yang ditinggikan mengatakan Administrator: Windows PowerShell, seperti yang ditunjukkan pada Gambar 1-5.
Sekarang setelah Anda menjalankan PowerShell yang ditinggikan sebagai administrator, UAC tidak lagi menjadi masalah saat Anda menjalankan perintah yang memerlukan elevasi.
Penting
Anda hanya boleh menjalankan PowerShell yang ditinggikan sebagai administrator jika benar-benar diperlukan.
Saat Anda menargetkan komputer jarak jauh, Tidak perlu menjalankan PowerShell yang ditingkatkan. Menjalankan PowerShell yang ditingkatkan hanya memengaruhi perintah yang berjalan terhadap komputer lokal Anda.
Anda dapat menyederhanakan temuan dan peluncuran PowerShell. Sematkan pintasan PowerShell atau Terminal Windows ke taskbar Anda. Cari PowerShell lagi, kecuali kali ini klik kanan padanya dan pilih Sematkan ke taskbar seperti yang ditunjukkan pada Gambar 1-6.
Penting
Versi asli buku ini, yang diterbitkan pada tahun 2017, merekomendasikan untuk menyematkan pintasan ke taskbar untuk meluncurkan instans yang ditinggikan secara otomatis setiap kali Anda memulai PowerShell. Namun, karena potensi masalah keamanan, saya tidak lagi merekomendasikannya. Aplikasi apa pun yang Anda luncurkan dari instans PowerShell yang ditingkatkan juga melewati UAC dan berjalan ditingkatkan. Misalnya, jika Anda meluncurkan browser web dari instans PowerShell yang ditinggikan, situs web apa pun yang Anda kunjungi yang berisi kode berbahaya juga berjalan ditinggikan.
Saat Anda perlu menjalankan PowerShell dengan izin yang ditinggikan, klik kanan pintasan PowerShell yang disematkan ke taskbar Anda saat menekan Shift. Pilih Jalankan sebagai administrator, seperti yang ditunjukkan pada Gambar 1-7.
Menentukan versi PowerShell Anda
Ada variabel otomatis di PowerShell yang menyimpan informasi status. Salah satu variabel ini adalah $PSVersionTable
, yang berisi informasi versi tentang sesi PowerShell Anda.
$PSVersionTable
Name Value
---- -----
PSVersion 5.1.22621.2428
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22621.2428
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Jika Anda menjalankan versi Windows PowerShell yang lebih lama dari 5.1, Anda harus memperbarui versi Windows Anda. Windows PowerShell 5.1 telah diinstal sebelumnya pada versi Windows yang saat ini didukung.
PowerShell versi 7 bukan pengganti Windows PowerShell 5.1; ini menginstal berdampingan dengan Windows PowerShell. Windows PowerShell versi 5.1 dan PowerShell versi 7 adalah dua produk yang berbeda. Untuk informasi selengkapnya tentang perbedaan antara Windows PowerShell versi 5.1 dan PowerShell versi 7, lihat Migrasi dari Windows PowerShell 5.1 ke PowerShell 7.
Tip
PowerShell versi 6, sebelumnya dikenal sebagai PowerShell Core, tidak lagi didukung.
Kebijakan eksekusi
Kebijakan eksekusi PowerShell mengontrol kondisi di mana Anda dapat menjalankan skrip PowerShell. Kebijakan eksekusi di PowerShell adalah fitur keselamatan yang dirancang untuk membantu mencegah eksekusi skrip berbahaya yang tidak disengaja. Namun, ini bukan batas keamanan karena tidak dapat menghentikan pengguna yang ditentukan agar tidak sengaja menjalankan skrip. Pengguna yang ditentukan dapat melewati kebijakan eksekusi di PowerShell.
Anda dapat mengatur kebijakan eksekusi untuk komputer lokal, pengguna saat ini, atau sesi PowerShell. Anda juga dapat mengatur kebijakan eksekusi untuk pengguna dan komputer dengan Kebijakan Grup.
Tabel berikut menunjukkan kebijakan eksekusi default untuk sistem operasi Windows saat ini.
Versi Sistem Operasi Windows | Kebijakan Eksekusi Default |
---|---|
Windows Server 2022 | Ditandatangani Jarak Jauh |
Server Windows 2019 | Ditandatangani Jarak Jauh |
Server Windows 2016 | Ditandatangani Jarak Jauh |
Windows 11 | Terbatas |
Windows 10 | Terbatas |
Terlepas dari pengaturan kebijakan eksekusi, Anda dapat menjalankan perintah PowerShell apa pun secara interaktif. Kebijakan eksekusi hanya memengaruhi perintah yang berjalan dalam skrip. Get-ExecutionPolicy
Gunakan cmdlet untuk menentukan pengaturan kebijakan eksekusi saat ini.
Periksa pengaturan kebijakan eksekusi pada komputer Anda.
Get-ExecutionPolicy
Restricted
Cantumkan pengaturan kebijakan eksekusi untuk semua cakupan.
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
Semua sistem operasi klien Windows memiliki pengaturan Restricted
kebijakan eksekusi default . Anda tidak dapat menjalankan skrip PowerShell menggunakan Restricted
pengaturan kebijakan eksekusi. Untuk menguji kebijakan eksekusi, simpan kode berikut sebagai .ps1
file bernama Get-TimeService.ps1
.
Tip
Skrip PowerShell adalah file teks biasa yang berisi perintah yang ingin Anda jalankan. File skrip PowerShell menggunakan .ps1
ekstensi file. Untuk membuat skrip PowerShell, gunakan editor kode seperti Visual Studio Code (VS Code) atau editor teks apa pun seperti Notepad.
Saat Anda menjalankan perintah berikut secara interaktif, perintah selesai tanpa kesalahan.
Get-Service -Name W32Time
Namun, PowerShell mengembalikan kesalahan saat Anda menjalankan perintah yang sama dari skrip.
.\Get-TimeService.ps1
.\Get-TimeService.ps1 : File C:\tmp\Get-TimeService.ps1 cannot be loaded
because running scripts is disabled on this system. For more information,
see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Get-TimeService.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Saat Anda menjalankan perintah di PowerShell yang menghasilkan kesalahan, baca pesan kesalahan sebelum mencoba kembali perintah. Perhatikan pesan kesalahan memberi tahu Anda mengapa perintah gagal:
... menjalankan skrip dinon-fungsikan pada sistem ini.
Untuk mengaktifkan eksekusi skrip, ubah kebijakan eksekusi dengan Set-ExecutionPolicy
cmdlet. LocalMachine
adalah cakupan default saat Anda tidak menentukan parameter Cakupan . Anda harus menjalankan PowerShell yang ditinggikan sebagai administrator untuk mengubah kebijakan eksekusi untuk komputer lokal.
Kecuali Anda menandatangani skrip Anda, saya sarankan RemoteSigned
menggunakan kebijakan eksekusi.
RemoteSigned
mencegah Anda menjalankan skrip yang diunduh yang tidak ditandatangani oleh penerbit tepercaya.
Sebelum Anda mengubah kebijakan eksekusi, baca artikel bantuan about_Execution_Policies untuk memahami implikasi keamanan.
Ubah pengaturan kebijakan eksekusi di komputer Anda menjadi RemoteSigned
.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Jika Anda berhasil mengubah kebijakan eksekusi, PowerShell akan menampilkan peringatan berikut:
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust.
Changing the execution policy might expose you to the security risks
described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the
execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "N"):y
Jika Anda tidak menjalankan PowerShell yang ditinggikan sebagai administrator, PowerShell mengembalikan pesan kesalahan berikut:
Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWAR
E\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied. To
change the execution policy for the default (LocalMachine) scope, start
Windows PowerShell with the "Run as administrator" option. To change the
execution policy for the current user, run "Set-ExecutionPolicy -Scope
CurrentUser".
At line:1 char:1
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy],
UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.
PowerShell.Commands.SetExecutionPolicyCommand
Anda juga dapat mengubah kebijakan eksekusi untuk pengguna saat ini tanpa mengharuskan Anda menjalankan PowerShell yang ditinggikan sebagai administrator. Langkah ini tidak perlu jika Anda berhasil mengatur kebijakan eksekusi untuk komputer lokal ke RemoteSigned
.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Dengan kebijakan eksekusi diatur ke RemoteSigned
, Get-TimeService.ps1
skrip berhasil dijalankan.
.\Get-TimeService.ps1
Status Name DisplayName
------ ---- -----------
Running W32Time Windows Time
Ringkasan
Dalam bab ini, Anda belajar di mana menemukan dan cara meluncurkan PowerShell. Anda juga mempelajari cara menentukan versi PowerShell dan tujuan kebijakan eksekusi.
Tinjauan
- Bagaimana Anda menentukan versi PowerShell yang dijalankan komputer?
- Kapan Anda harus meluncurkan PowerShell yang ditinggikan sebagai administrator?
- Apa kebijakan eksekusi default pada komputer klien Windows, dan apa yang mencegah Anda melakukan?
- Bagaimana Anda menentukan pengaturan kebijakan eksekusi PowerShell saat ini?
- Bagaimana Anda mengubah kebijakan eksekusi PowerShell?
Referensi
Untuk mempelajari selengkapnya tentang konsep yang dibahas dalam bab ini, baca artikel bantuan PowerShell berikut ini.
Langkah berikutnya
Di bab berikutnya, Anda akan mempelajari tentang penemuan perintah di PowerShell. Anda juga akan mempelajari cara mengunduh file bantuan PowerShell sehingga Anda dapat melihat bantuan di sesi PowerShell Anda.