about_PowerShell_exe
Deskripsi singkat
Menjelaskan cara menggunakan powershell.exe
antarmuka baris perintah. Menampilkan parameter baris perintah dan menguraikan sintaks.
Deskripsi panjang
Untuk informasi tentang opsi baris perintah untuk PowerShell 7, lihat about_Pwsh.
SINTAKS
PowerShell[.exe]
[-PSConsoleFile <file> | -Version <version>]
[-NoLogo]
[-NoExit]
[-Sta]
[-Mta]
[-NoProfile]
[-NonInteractive]
[-InputFormat {Text | XML}]
[-OutputFormat {Text | XML}]
[-WindowStyle <style>]
[-EncodedArguments <Base64EncodedArguments>]
[-EncodedCommand <Base64EncodedCommand>]
[-ConfigurationName <string>]
[-File - | <filePath> <args>]
[-ExecutionPolicy <ExecutionPolicy>]
[-Command - | { <script-block> [-args <arg-array>] }
| { <string> [<CommandParameters>] } ]
PowerShell[.exe] -Help | -? | /?
Parameter
Semua parameter tidak peka huruf besar/kecil.
-File - | <filePath><args>
Nilai File dapat berupa -
atau filepath dan parameter opsional. Jika nilai File adalah -
, maka perintah dibaca dari input standar.
Jika nilai File adalah jalur file, skrip berjalan dalam cakupan lokal ("sumber titik") dari sesi baru, sehingga fungsi dan variabel yang dibuat skrip tersedia dalam sesi baru tersebut. Masukkan jalur file skrip dan parameter apa pun. File harus menjadi parameter terakhir dalam perintah. Semua nilai yang ditik setelah parameter File ditafsirkan sebagai jalur file skrip dan parameter yang diteruskan ke skrip tersebut. Misalnya: -File .\Get-Script.ps1 -Domain Central
Biasanya, parameter sakelar skrip disertakan atau dihilangkan.
Misalnya, perintah berikut menggunakan parameter Get-Script.ps1
Semua file skrip:-File .\Get-Script.ps1 -All
Dalam kasus yang jarang terjadi, Anda mungkin perlu memberikan nilai Boolean untuk parameter.
Tidak dimungkinkan untuk meneruskan nilai boolean eksplisit untuk parameter pengalihan saat menjalankan skrip dengan cara ini. Batasan ini dihapus di PowerShell 6 (pwsh.exe
).
Parameter yang diteruskan ke skrip diteruskan sebagai string harfiah, setelah interpretasi oleh shell saat ini. Misalnya, jika Anda berada di cmd.exe
dan ingin meneruskan nilai variabel lingkungan, Anda akan menggunakan cmd.exe
sintaks: powershell.exe -File .\test.ps1 -TestParam %windir%
Sebaliknya, berjalan powershell.exe -File .\test.ps1 -TestParam $env:windir
menghasilkan cmd.exe
skrip yang menerima string $env:windir
harfiah karena tidak memiliki arti khusus untuk shell saat ini cmd.exe
. Gaya $env:windir
referensi variabel lingkungan dapat digunakan di dalam parameter Perintah , karena di sana ditafsirkan sebagai kode PowerShell.
Demikian pula, jika Anda ingin menjalankan perintah yang sama dari skrip Batch, Anda akan menggunakan %~dp0
alih-alih .\
atau $PSScriptRoot
untuk mewakili direktori eksekusi saat ini: pwsh -File %~dp0test.ps1 -TestParam %windir%
. Jika Anda menggunakan .\test.ps1
sebagai gantinya, PowerShell melemparkan kesalahan karena tidak dapat menemukan jalur harfiah .\test.ps1
Catatan
Parameter File tidak dapat mendukung skrip menggunakan parameter yang mengharapkan array nilai argumen. Ini, sayangnya, adalah batasan tentang bagaimana perintah asli mendapatkan nilai argumen. Saat Anda memanggil executable asli (seperti powershell
atau pwsh
), tidak tahu apa yang harus dilakukan dengan array, sehingga diteruskan sebagai string.
Jika nilai File adalah -
, maka perintah dibaca dari input standar.
Berjalan powershell -File -
tanpa input standar yang dialihkan memulai sesi reguler. Ini sama dengan tidak menentukan parameter sama File
sekali. Saat membaca dari input standar, pernyataan input dijalankan satu pernyataan sekaligus seolah-olah ditik pada prompt perintah PowerShell. Jika pernyataan tidak diurai dengan benar, pernyataan tidak dijalankan. Kode keluar proses ditentukan oleh status perintah terakhir (dijalankan). Dengan keberhasilan eksekusi, kode keluar selalu 0
. Ketika file skrip dihentikan dengan exit
perintah, kode keluar proses diatur ke argumen numerik yang digunakan dengan exit
perintah .
Mirip -Command
dengan , ketika terjadi kesalahan penghentian skrip, kode keluar diatur ke 1
. Namun, tidak seperti -Command
, ketika eksekusi terganggu dengan Ctrl+C, kode keluarnya adalah .0
Untuk informasi selengkapnya, lihat $LASTEXITCODE
di about_Automatic_Variables.
-Perintah
Nilai Perintah dapat berupa -
, blok skrip, atau string. Jika nilai Perintah adalah -
, teks perintah dibaca dari input standar.
Parameter Perintah hanya menerima blok skrip untuk eksekusi ketika dapat mengenali nilai yang diteruskan ke Perintah sebagai jenis ScriptBlock . Ini hanya dimungkinkan saat berjalan powershell.exe
dari host PowerShell lain. Jenis ScriptBlock dapat dimuat dalam variabel yang ada, dikembalikan dari ekspresi, atau diurai oleh host PowerShell sebagai blok skrip literal yang diapit kurung kurawal ({}
), sebelum diteruskan ke powershell.exe
.
powershell -Command {Get-WinEvent -LogName security}
Dalam cmd.exe
, tidak ada yang namanya blok skrip (atau jenis ScriptBlock), sehingga nilai yang diteruskan ke Perintah selalu berupa string. Anda dapat menulis blok skrip di dalam string, tetapi alih-alih dijalankan, itu bertingkah persis seolah-olah Anda mengetikkannya pada perintah PowerShell biasa, mencetak konten blok skrip kembali kepada Anda.
String yang diteruskan ke Perintah masih dijalankan sebagai kode PowerShell, sehingga kurung kurawal blok skrip sering tidak diperlukan di tempat pertama saat berjalan dari cmd.exe
. Untuk menjalankan blok skrip sebaris yang ditentukan di dalam string, operator &
panggilan dapat digunakan:
powershell.exe -Command "& {Get-WinEvent -LogName security}"
Jika nilai Perintah adalah string, Perintah harus menjadi parameter terakhir untuk pwsh, karena semua argumen yang mengikutinya ditafsirkan sebagai bagian dari perintah untuk dijalankan.
Ketika dipanggil dari dalam sesi PowerShell yang ada, hasilnya dikembalikan ke shell induk sebagai objek XML yang dideserialisasi, bukan objek langsung. Untuk shell lain, hasilnya dikembalikan sebagai string.
Jika nilai Perintah adalah -
, perintah dibaca dari input standar. Anda harus mengalihkan input standar saat menggunakan parameter Perintah dengan input standar. Contohnya:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
Contoh ini menghasilkan output berikut:
in
hi there
out
Saat membaca dari input standar, input diurai dan dijalankan satu pernyataan pada satu waktu, seolah-olah ditik pada prompt perintah PowerShell. Jika kode input tidak diurai dengan benar, pernyataan tidak dijalankan. Kecuali Anda menggunakan -NoExit
parameter , sesi PowerShell keluar ketika tidak ada lagi input untuk dibaca dari input standar.
Kode keluar proses ditentukan oleh status perintah terakhir (dijalankan) dalam input. Kode keluar adalah 0
kapan $?
adalah $true
atau 1
kapan $?
adalah $false
. Jika perintah terakhir adalah program eksternal atau skrip PowerShell yang secara eksplisit mengatur kode keluar selain 0
atau 1
, kode keluar tersebut dikonversi ke 1
untuk kode keluar proses. Demikian pula, nilai 1 dikembalikan ketika kesalahan penghentian skrip (penghentian runspace), seperti throw
atau , terjadi atau ketika eksekusi terganggu dengan Ctrl+C.-ErrorAction Stop
Untuk mempertahankan kode keluar tertentu, tambahkan exit $LASTEXITCODE
ke string perintah atau blok skrip Anda. Untuk informasi selengkapnya, lihat $LASTEXITCODE
di about_Automatic_Variables.
String -ConfigurationName <>
Menentukan titik akhir konfigurasi tempat PowerShell dijalankan. Ini bisa menjadi titik akhir apa pun yang terdaftar di komputer lokal termasuk titik akhir jarak jauh PowerShell default atau titik akhir kustom yang memiliki kemampuan peran pengguna tertentu.
-EncodedArguments <Base64EncodedArguments>
Menerima argumen perintah versi string yang dikodekan Base64. Gunakan parameter ini untuk mengirimkan argumen yang memerlukan kutipan berlapis yang kompleks. Representasi Base64 harus berupa string yang dikodekan UTF-16LE.
-EncodedCommand <Base64EncodedCommand>
Menerima perintah versi string yang dikodekan base-64. Gunakan parameter ini untuk mengirimkan perintah ke PowerShell yang memerlukan tanda kutip kompleks atau kurung kurawal. String harus diformat menggunakan pengodean karakter UTF-16LE.
-ExecutionPolicy <ExecutionPolicy>
Mengatur kebijakan eksekusi default untuk sesi saat ini dan menyimpannya dalam $env:PSExecutionPolicyPreference
variabel lingkungan. Parameter ini tidak mengubah kebijakan eksekusi PowerShell yang diatur dalam registri. Untuk informasi tentang kebijakan eksekusi PowerShell, termasuk daftar nilai yang valid, lihat about_Execution_Policies.
-InputFormat {Text | XML}
Menjelaskan format data yang dikirim ke PowerShell. Nilai yang valid adalah Text
(string teks) atau XML
(format CLIXML berseri).
-Mta
Memulai PowerShell menggunakan apartemen multi-utas. Parameter ini diperkenalkan di PowerShell 3.0. Di PowerShell 2.0, apartemen multi-utas (MTA) adalah default. Di PowerShell 3.0, apartemen berulir tunggal (STA) adalah default.
-NoExit
Tidak keluar setelah menjalankan perintah startup.
-NonInteraktif
Sakelar ini digunakan untuk membuat sesi yang seharusnya tidak memerlukan input pengguna. Ini berguna untuk skrip yang berjalan dalam tugas terjadwal atau alur CI/CD. Setiap upaya untuk menggunakan fitur interaktif, seperti Read-Host
atau permintaan konfirmasi, mengakibatkan pernyataan mengakhiri kesalahan daripada menggantung.
-NoLogo
Menyembunyikan banner hak cipta saat startup.
-NoProfile
Tidak memuat profil PowerShell.
-OutputFormat {Text | XML}
Menentukan bagaimana output dari PowerShell diformat. Nilai yang valid adalah Text
(string teks) atau XML
(format CLIXML berseri).
-PSConsoleFile <FilePath>
Memuat file konsol PowerShell yang ditentukan. Masukkan jalur dan nama file konsol. Untuk membuat file konsol, gunakan cmdlet Export-Console di PowerShell.
-Sta
Memulai PowerShell menggunakan apartemen berulir tunggal. Di Windows PowerShell 2.0, apartemen multi-utas (MTA) adalah default. Di Windows PowerShell 3.0, apartemen berulir tunggal (STA) adalah default.
Versi PowerShell -Versi <>
Memulai versi PowerShell yang ditentukan. Nilai yang valid adalah 2,0 dan 3,0. Versi yang Anda tentukan harus diinstal pada sistem. Jika Windows PowerShell 3.0 diinstal di komputer, "3.0" adalah versi default. Jika tidak, "2.0" adalah versi default. Untuk informasi selengkapnya, lihat Menginstal PowerShell.
Gaya Jendela -WindowStyle <>
Mengatur gaya jendela untuk sesi. Nilai yang valid adalah: Normal
, Minimized
, Maximized
, dan Hidden
.
-Tolong-?/?
Menampilkan bantuan untuk PowerShell.exe
. Jika Anda mengetik PowerShell.exe
perintah dalam sesi PowerShell, tambahkan parameter perintah dengan tanda hubung (-
), bukan garis miring (/
). Anda dapat menggunakan tanda hubung atau garis miring di cmd.exe
.
REMARKS
Catatan pemecahan masalah: Di PowerShell 2.0, memulai beberapa program dari konsol PowerShell gagal dengan LastExitCode 0xc0000142.
CONTOH
# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1
# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML
# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName security"
# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName security}
# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName security}"
# To use the -EncodedCommand parameter:
$command = "dir 'c:\program files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk