Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
PowerShell adalah shell baris perintah dan bahasa skrip yang digunakan untuk otomatisasi. Mirip dengan shell lain, seperti bash
di Linux atau Windows Command Shell (cmd.exe
), PowerShell memungkinkan Anda menjalankan perintah apa pun yang tersedia di sistem Anda, bukan hanya perintah PowerShell.
Jenis perintah
Untuk shell apa pun dalam sistem operasi apa pun, ada tiga jenis perintah:
Kata kunci bahasa shell adalah bagian dari bahasa pemrograman shell.
- Contoh kata kunci
bash
meliputi:if
,then
,else
,elif
, danfi
. - Contoh kata kunci
cmd.exe
meliputi:dir
,copy
,move
,if
, danecho
. - Contoh kata kunci PowerShell meliputi:
for
,foreach
,try
,catch
, dantrap
.
Kata kunci bahasa shell hanya dapat digunakan dalam lingkungan runtime shell. Tidak ada file yang dapat dieksekusi, di luar shell, yang menyediakan fungsionalitas kata kunci.
- Contoh kata kunci
perintah OS-native adalah file yang dapat dieksekusi yang diinstal dalam sistem operasi. Program eksekusi dapat dijalankan dari terminal baris perintah apa pun, seperti PowerShell. Ini termasuk file skrip yang mungkin mengharuskan shell lain berfungsi dengan baik. Misalnya, jika Anda menjalankan skrip batch Windows (file
.cmd
) di PowerShell, PowerShell menjalankancmd.exe
dan meneruskan file batch untuk eksekusi.perintah khusus lingkungan Shell adalah perintah yang ditentukan dalam file eksternal yang hanya dapat digunakan dalam lingkungan runtime shell. Ini termasuk skrip dan fungsi, atau dapat menjadi modul yang dikompilasi secara khusus yang menambahkan perintah ke runtime shell. Di PowerShell, perintah ini dikenal sebagai cmdlet (diucapkan "command-lets").
Menjalankan perintah asli
Perintah asli apa pun dapat dijalankan dari baris perintah PowerShell. Biasanya Anda menjalankan perintah persis seperti yang Anda lakukan di bash
atau cmd.exe
. Contoh berikut menunjukkan menjalankan perintah grep
di bash
di Ubuntu Linux.
sdwheeler@circumflex:~$ grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
sdwheeler@circumflex:~$ pwsh
PowerShell 7.2.6
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
Setelah memulai PowerShell di Ubuntu, Anda dapat menjalankan perintah yang sama dari baris perintah PowerShell:
PS /home/sdwheeler> grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
Meneruskan argumen ke perintah bawaan
Sebagian besar shell mencakup fitur untuk menggunakan variabel, mengevaluasi ekspresi, dan menangani string. Namun, setiap shell melakukan ini secara berbeda. Di PowerShell, semua parameter dimulai dengan karakter tanda hubung (-
). Dalam cmd.exe
, sebagian besar parameter menggunakan karakter garis miring (/
). Alat baris perintah lainnya mungkin tidak memiliki karakter khusus untuk parameter.
Setiap shell memiliki caranya sendiri untuk menangani dan mengevaluasi string pada baris perintah. Saat menjalankan perintah asli di PowerShell yang mengharapkan string dikutip dengan cara tertentu, Anda mungkin perlu menyesuaikan cara Anda meneruskan string tersebut.
Untuk informasi selengkapnya, lihat artikel berikut ini:
PowerShell 7.2 memperkenalkan fitur eksperimental baru PSNativeCommandArgumentPassing
yang meningkatkan penanganan perintah asli. Untuk informasi selengkapnya, lihat $PSNativeCommandArgumentPassing
.
Menangani output dan kesalahan
PowerShell juga memiliki beberapa aliran output lebih banyak daripada shell lainnya. Cangkang bash
dan cmd.exe
memiliki stdout dan stderr . PowerShell memiliki enam aliran output. Untuk informasi selengkapnya, lihat about_Redirection dan about_Output_Streams.
Secara umum, output yang dikirim ke stdout oleh perintah asli dikirim ke aliran Success di PowerShell. Output yang dikirim ke stderr oleh perintah bawaan dikirim ke aliran Kesalahan di PowerShell.
Ketika perintah asli memiliki kode keluar bukan nol, $?
diatur ke $false
. Jika kode keluar nol, $?
diatur ke $true
.
Namun, ini berubah di PowerShell 7.2. Rekaman kesalahan yang dialihkan dari perintah asli, seperti saat menggunakan operator pengalihan (2>&1
), tidak ditulis ke variabel $Error
PowerShell dan variabel preferensi $ErrorActionPreference
tidak memengaruhi output yang dialihkan.
Banyak perintah bawaan menulis ke stderr sebagai aliran alternatif untuk informasi tambahan. Perilaku ini dapat menyebabkan kebingungan di PowerShell saat memeriksa kesalahan, dan informasi keluaran tambahan dapat hilang jika $ErrorActionPreference
diatur ke status yang menonaktifkan output.
PowerShell 7.3 menambahkan fitur eksperimental baru PSNativeCommandErrorActionPreference
yang memungkinkan Anda mengontrol apakah output ke stderr
diperlakukan sebagai kesalahan. Untuk informasi selengkapnya, lihat $PSNativeCommandUseErrorActionPreference
.
Menjalankan perintah PowerShell
Seperti yang disebutkan sebelumnya, perintah PowerShell dikenal sebagai cmdlet. Cmdlet dikumpulkan ke dalam modul PowerShell yang dapat dimuat sesuai permintaan. Cmdlet dapat ditulis dalam bahasa .NET yang dikompilasi atau menggunakan bahasa skrip PowerShell itu sendiri.
Perintah PowerShell yang menjalankan perintah lain
Operator panggilan PowerShell (&
) memungkinkan Anda menjalankan perintah yang disimpan dalam variabel dan diwakili oleh string atau blok skrip. Anda dapat menggunakan ini untuk menjalankan perintah asli atau perintah PowerShell. Ini berguna dalam skrip ketika Anda perlu membangun parameter baris perintah secara dinamis untuk perintah asli. Untuk informasi selengkapnya, lihat operator panggilan .
Cmdlet Start-Process
dapat digunakan untuk menjalankan perintah asli, tetapi hanya boleh digunakan ketika Anda perlu mengontrol bagaimana perintah dijalankan. Cmdlet memiliki parameter untuk mendukung skenario berikut:
- Jalankan perintah menggunakan kredensial yang berbeda
- Sembunyikan jendela konsol yang dibuat oleh proses baru
- Alihkan stdin, stdout, dan stderr
- Menggunakan direktori kerja yang berbeda untuk perintah
Contoh berikut menjalankan perintah asli sort.exe
dengan aliran input dan output yang dialihkan.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
Untuk informasi selengkapnya, lihat Mulai Proses.
Di Windows, cmdlet Invoke-Item
melakukan tindakan default untuk item yang ditentukan. Misalnya, menjalankan file yang dapat dieksekusi atau membuka file dokumen menggunakan aplikasi yang terkait dengan jenis file dokumen. Tindakan default bergantung pada jenis item dan diselesaikan oleh penyedia PowerShell yang menyediakan akses ke item.
Contoh berikut membuka repositori kode sumber PowerShell di browser web default Anda.
Invoke-Item https://github.com/PowerShell/PowerShell
Untuk informasi selengkapnya, lihat Invoke-Item.