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

-Perintah

Menjalankan perintah yang ditentukan (dan parameter apa pun) seolah-olah mereka ditik pada prompt perintah PowerShell, lalu keluar, kecuali NoExit parameter ditentukan.

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 akan selalu menjadi string. Anda dapat menulis blok skrip di dalam string, tetapi alih-alih dijalankan, itu akan 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 -, teks 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

Kode keluar proses ditentukan oleh status perintah terakhir (dijalankan) dalam blok skrip. 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. Untuk mempertahankan kode keluar tertentu, tambahkan exit $LASTEXITCODE ke string perintah atau blok skrip Anda.

Untuk informasi selengkapnya, lihat $LASTEXITCODE di about_Automatic_Variables.

Demikian pula, nilai 1 dikembalikan ketika kesalahan penghentian skrip (penghentian runspace), seperti throw atau , terjadi atau ketika eksekusi terganggu dengan Ctrl+C.-ErrorAction Stop

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.

-File - | <filePath><Args>

Jika nilai File adalah -, teks perintah dibaca dari input standar. Berjalan powershell -File - tanpa input standar yang dialihkan memulai sesi reguler. Ini sama dengan tidak menentukan parameter File sama sekali.

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.

Parameter yang diteruskan ke skrip diteruskan sebagai string harfiah, setelah interpretasi oleh shell saat ini. Misalnya, jika Anda berada dalam cmd.exe dan ingin meneruskan nilai variabel lingkungan, Anda akan menggunakan sintaks cmd.exe : powershell.exe -File .\test.ps1 -TestParam %windir%

Sebaliknya, berjalan powershell.exe -File .\test.ps1 -TestParam $env:windir dalam cmd.exe menghasilkan skrip yang menerima string $env:windir harfiah karena tidak memiliki arti khusus untuk shell cmd.exe saat ini. Gaya $env:windir referensi variabel lingkungan dapat digunakan di dalam parameter Perintah , karena akan 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: powershell.exe -File %~dp0test.ps1 -TestParam %windir%. Jika Anda menggunakan .\test.ps1, PowerShell akan melemparkan kesalahan karena tidak dapat menemukan jalur harfiah .\test.ps1

Ketika nilai File adalah filepath, Fileharus menjadi parameter terakhir dalam perintah karena karakter apa pun yang di ketik setelah nama parameter File ditafsirkan sebagai jalur file skrip diikuti oleh parameter skrip.

Anda dapat menyertakan parameter dan nilai skrip dalam nilai parameter File . 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).

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.

Ketika file skrip dihentikan dengan exit perintah, kode keluar proses diatur ke argumen numerik yang digunakan dengan exit perintah . Dengan penghentian normal, kode keluar selalu 0.

Untuk informasi selengkapnya, lihat $LASTEXITCODE di about_Automatic_Variables.

-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.

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