about_Pwsh

Deskripsi singkat

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

Deskripsi panjang

Sintaks

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

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

Parameter

Semua parameter tidak-ipeka huruf besar/kecil.

-File | -f

Jika nilai File adalah -, teks 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.

Ini adalah parameter default jika tidak ada parameter tetapi nilai ada di baris perintah. Skrip yang ditentukan berjalan dalam cakupan lokal ("bersumber titik"), sehingga fungsi dan variabel yang dibuat skrip tersedia dalam sesi saat ini. Masukkan jalur file skrip dan parameter apa pun. File harus menjadi parameter terakhir dalam perintah, karena semua karakter yang ditik 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 Semua file skrip Get-Script.ps1: -File .\Get-Script.ps1 -All

Dalam kasus yang jarang terjadi, Anda mungkin perlu memberikan nilai Boolean untuk parameter sakelar. 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 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, PowerShell akan melempar 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 bagaimana perintah asli mendapatkan nilai argumen. Saat Anda memanggil executable asli (seperti powershell atau pwsh), itu tidak tahu apa yang harus dilakukan dengan array, sehingga diteruskan sebagai string.

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

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.

Catatan

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

-Command | -c

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

Nilai Command 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 harfiah 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 Command 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 permintaan 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 kali 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 Command adalah string, Command 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 mencetak output berikut:

in
hi there
out

Kode keluar proses ditentukan oleh status perintah terakhir (dijalankan) dalam blok skrip. Kode keluar adalah 0 ketika $? adalah $true atau 1 ketika $? 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.

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

-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

-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. Variabel $env:PSExecutionPolicyPreference lingkungan tidak ada pada platform non-Windows.

-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 login 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. Meneruskan parameter ini di posisi lain akan diabaikan.

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 pada baris terakhir. Ini membutuhkan 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 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.

-NoExit | -noe

Tidak keluar setelah menjalankan perintah startup.

Contoh: pwsh -NoExit -Command Get-Date

-NoLogo | -nol

Menyembunyikan banner hak cipta 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.

-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

Saat dipanggil dengan sesi PowerShell, Anda mendapatkan objek yang dideserialisasi sebagai output, bukan string biasa. Ketika dipanggil dari shell lain, outputnya 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.

-Version | -v

Menampilkan versi PowerShell. Parameter tambahan diabaikan.

-WindowStyle | -w

Mengatur gaya jendela untuk sesi. Nilai yang valid adalah Normal, Diminimalkan, Dimaksimalkan, dan Tersembunyi.

-WorkingDirectory | -wd

Mengatur direktori kerja awal dengan mengeksekusi 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 ke depan (/).