Bagikan melalui


about_Pwsh

Deskripsi singkat

Menjelaskan cara menggunakan pwsh antarmuka ine perintah-l. Menampilkan parameter ine perintah-ldan menguraikan sintaks.

Deskripsi panjang

Untuk informasi tentang opsi ine perintah-luntuk Windows PowerShell 5.1, lihat about_PowerShell_exe.

Sintaks

Usage: pwsh[.exe]
    [-Login]
    [[-File] <filePath> [args]]
    [-Command { - | <script-block> [-args <arg-array>]
                  | <string> [<CommandParameters>] } ]
    [[-CommandWithArgs <string>] [<CommandParameters>]]
    [-ConfigurationFile <filePath>]
    [-ConfigurationName <string>]
    [-CustomPipeName <string>]
    [-EncodedCommand <Base64EncodedCommand>]
    [-ExecutionPolicy <ExecutionPolicy>]
    [-InputFormat {Text | XML}]
    [-Interactive]
    [-MTA]
    [-NoExit]
    [-NoLogo]
    [-NonInteractive]
    [-NoProfile]
    [-NoProfileLoadTime]
    [-OutputFormat {Text | XML}]
    [-SettingsFile <filePath>]
    [-SSHServerMode]
    [-STA]
    [-Version]
    [-WindowStyle <style>]
    [-WorkingDirectory <directoryPath>]

pwsh[.exe] -h | -Help | -? | /?

Parameter

Semua parameter bersifat nsensitif huruf-ibesar/kecil.

-File | -f

Nilai File dapat berupa - atau filepath dan parameter opsional. Jika nilai File adalah -, maka perintah dibaca dari input standar.

Ini adalah parameter default jika tidak ada parameter yang ada tetapi nilai ada di baris perintah. Skrip yang ditentukan berjalan dalam cakupan lokal ("sumber titik") dari sesi baru, sehingga fungsi dan variabel yang dibuat skrip tersedia di sesi baru. Masukkan jalur file skrip dan parameter apa pun. File harus menjadi parameter terakhir dalam perintah, karena semua karakter yang di ketik setelah nama parameter File ditafsirkan sebagai jalur file skrip diikuti oleh parameter skrip.

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 pengalihan. Untuk memberikan nilai Boolean untuk parameter sakelar dalam nilai parameter File , Gunakan parameter yang biasanya diikuti segera oleh titik dua dan nilai boolean, seperti berikut ini: -File .\Get-Script.ps1 -All:$False.

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: pwsh -File .\test.ps1 -TestParam %windir%

Sebaliknya, berjalan pwsh -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 pwsh -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) dalam input. Dengan penghentian normal, kode keluar selalu 0. Ketika file skrip dihentikan dengan exit perintah, kode keluar proses diatur ke argumen numerik yang digunakan dengan exit perintah .

Mirip -Commanddengan , 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.

Catatan

Pada PowerShell 7.2, parameter File hanya menerima .ps1 file di Windows. Jika jenis file lain diberikan kesalahan akan dilemparkan. Perilaku ini spesifik untuk Windows. Pada platform lain, PowerShell mencoba menjalankan jenis file lain.

-Command | -c

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

pwsh -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:

pwsh -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"
'@ | pwsh -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.

-CommandWithArgs | -cwa

Ini adalah fitur eksperimental yang ditambahkan dalam 7.4.

Menjalankan perintah PowerShell dengan argumen. Tidak seperti -Command, parameter ini mengisi variabel n bawaan $args-iyang dapat digunakan oleh perintah .

String pertama adalah perintah . String tambahan yang dibatasi oleh spasi kosong adalah argumen.

Contohnya:

pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2

Contoh ini menghasilkan output berikut:

arg: arg1
arg: arg2

Catatan

Penguraian argumen dengan tanda kutip menyebabkan contoh gagal jika dijalankan dari cmd.exe atau powershell.exe. Untuk menjalankannya, Anda dapat menggunakan

REM Quoting required when run from cmd.exe
pwsh -CommandWithArgs "$args | % { ""arg: $_"" }" arg1 arg2
# Quoting required when run from powershell.exe
pwsh -CommandWithArgs '"$args | % { ""arg: $_"" }"' arg1 arg2

-ConfigurationName | -config

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.

Contoh: pwsh -ConfigurationName AdminRoles

-ConfigurationFile

Menentukan jalur file konfigurasi sesi (.pssc). Konfigurasi yang terkandung dalam file konfigurasi akan diterapkan ke sesi PowerShell.

Contoh: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"

-CustomPipeName

Menentukan nama yang akan digunakan untuk server IPC tambahan (pipa bernama) yang digunakan untuk penelusuran kesalahan dan komunikasi lintas proses lainnya. Ini menawarkan mekanisme yang dapat diprediksi untuk menyambungkan ke instans PowerShell lainnya. Biasanya digunakan dengan parameter CustomPipeName pada Enter-PSHostProcess.

Parameter ini diperkenalkan di PowerShell 6.2.

Contohnya:

# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe

-EncodedCommand | -e | -ec

Menerima versi string base64-eyang di-ncoding dari perintah. Gunakan parameter ini untuk mengirimkan perintah ke PowerShell yang memerlukan kutipan berlapis yang kompleks. Representasi Base64 harus berupa string yang dikodekan UTF-16LE.

Contohnya:

$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand

-ExecutionPolicy | -ex | -ep

Mengatur kebijakan eksekusi default untuk sesi saat ini dan menyimpannya dalam $env:PSExecutionPolicyPreference variabel lingkungan. Parameter ini tidak mengubah kebijakan eksekusi yang dikonfigurasi secara terus-menerus.

Parameter ini hanya berlaku untuk komputer Windows. Pada platform non-Windows, parameter dan nilai yang disediakan diabaikan.

-InputFormat | -inp | -if

Menjelaskan format data yang dikirim ke PowerShell. Nilai yang valid adalah "Teks" (string teks) atau "XML" (format CLIXML berseri).

-Interactive | -i

Sajikan perintah interaktif kepada pengguna. Terbalik untuk parameter NonInteraktif.

-Login | -l

Di Linux dan macOS, mulai PowerShell sebagai shell masuk, menggunakan /bin/sh untuk menjalankan profil masuk seperti /etc/profile dan ~/.profile. Pada Windows, sakelar ini tidak melakukan apa-apa.

Penting

Parameter ini harus menjadi yang pertama untuk memulai PowerShell sebagai shell masuk. Parameter ini diabaikan jika diteruskan di posisi lain.

Untuk menyiapkan pwsh sebagai shell masuk pada sistem operasi ike UNIX-l:

  • Verifikasi bahwa jalur absolut lengkap ke pwsh tercantum di bawah /etc/shells

    • Jalur ini biasanya seperti /usr/bin/pwsh di Linux atau /usr/local/bin/pwsh di macOS
    • Dengan beberapa metode penginstalan, entri ini akan ditambahkan secara otomatis pada waktu penginstalan
    • Jika pwsh tidak ada di /etc/shells, gunakan editor untuk menambahkan jalur pwsh ke di baris terakhir. Ini memerlukan hak istimewa yang ditingkatkan untuk diedit.
  • Gunakan utilitas chsh untuk mengatur shell pengguna Anda saat ini ke pwsh:

    chsh -s /usr/bin/pwsh
    

Peringatan

Pengaturan pwsh sebagai shell login saat ini tidak didukung pada Subsistem Windows untuk Linux (WSL), dan mencoba untuk mengatur pwsh sebagai shell login di sana mungkin menyebabkan tidak dapat memulai WSL secara interaktif.

-MTA

Mulai PowerShell menggunakan apartemen multi-utas. Sakelar ini hanya tersedia di Windows. Menggunakan parameter ini pada platform non-Windows menghasilkan kesalahan.

-NoExit | -noe

Tidak keluar setelah menjalankan perintah startup.

Contoh: pwsh -NoExit -Command Get-Date

-NoLogo | -nol

Menyembunyikan spanduk saat memulai sesi interaktif.

-NonInteractive | -noni

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.

-NoProfile | -nop

Tidak memuat profil PowerShell.

-NoProfileLoadTime

Menyembunyikan teks waktu muat profil PowerShell yang ditampilkan saat startup saat waktu pemuatan melebihi 500 milidetik.

-OutputFormat | -o | -of

Menentukan bagaimana output dari PowerShell diformat. Nilai yang valid adalah "Teks" (string teks) atau "XML" (format CLIXML berseri).

Contoh: pwsh -o XML -c Get-Date

Ketika dipanggil dalam sesi PowerShell, Anda mendapatkan objek deserialisasi sebagai output string yang agak biasa. Ketika dipanggil dari shell lain, output adalah data string yang diformat sebagai teks CLIXML.

-SettingsFile | -settings

Mengambil alih file pengaturan ide powershell.config.json sistem-wuntuk sesi tersebut. Secara default, pengaturan ide sistem-wdibaca dari powershell.config.json dalam $PSHOME direktori.

Perhatikan bahwa pengaturan ini tidak digunakan oleh titik akhir yang ditentukan oleh -ConfigurationName argumen .

Contoh: pwsh -SettingsFile c:\myproject\powershell.config.json

-SSHServerMode | -sshs

Digunakan dalam sshd_config untuk menjalankan PowerShell sebagai subsistem SSH. Ini tidak dimaksudkan atau didukung untuk penggunaan lain.

-STA

Mulai PowerShell menggunakan apartemen berulir tunggal. Ini adalah default. Sakelar ini hanya tersedia pada platform Windows. Menggunakan parameter ini pada platform non-Windows menghasilkan kesalahan.

-Version | -v

Menampilkan versi PowerShell yang dapat dieksekusi ini. Parameter tambahan diabaikan.

-WindowStyle | -w

Mengatur gaya jendela untuk sesi. Nilai yang valid adalah Normal, Diminimalkan, Dimaksimalkan, dan Tersembunyi. Parameter ini hanya berlaku untuk Windows. Menggunakan parameter ini pada platform non-Windows menghasilkan kesalahan.

-WorkingDirectory | -wd | -wo

Mengatur direktori kerja awal dengan menjalankan saat startup. Jalur file PowerShell yang valid didukung.

Untuk memulai PowerShell di direktori beranda Anda, gunakan: pwsh -WorkingDirectory ~

-Help, -?, /?

Menampilkan bantuan untuk pwsh. Jika Anda mengetik perintah pwsh di PowerShell, tambahkan parameter perintah dengan tanda hubung (-), bukan garis miring (/).