about_PowerShell_Config

Deskripsi singkat

File konfigurasi untuk PowerShell, mengganti konfigurasi Registri.

Deskripsi panjang

File powershell.config.json berisi pengaturan konfigurasi untuk PowerShell. PowerShell memuat konfigurasi ini saat startup. Pengaturan juga dapat dimodifikasi saat runtime. Sebelumnya, pengaturan ini disimpan di Registri Windows untuk PowerShell, tetapi sekarang terkandung dalam file untuk mengaktifkan konfigurasi di macOS dan Linux.

Peringatan

Kunci yang tidak dikenali atau nilai yang tidak valid dalam file konfigurasi diabaikan secara diam-diam. powershell.config.json Jika file berisi JSON yang tidak valid, PowerShell tidak dapat memulai sesi interaktif. Jika ini terjadi, Anda harus memperbaiki file konfigurasi.

Konfigurasi AllUsers (bersama)

File powershell.config.json di $PSHOME direktori menentukan konfigurasi untuk semua sesi PowerShell yang berjalan dari penginstalan PowerShell tersebut.

Catatan

Lokasi $PSHOME didefinisikan sebagai direktori yang sama dengan rakitan System.Management.Automation.dll yang dijalankan. Ini berlaku untuk instans PowerShell SDK yang dihosting juga.

Konfigurasi CurrentUser (per pengguna)

Anda juga dapat mengonfigurasi PowerShell berdasarkan per pengguna dengan menempatkan file di direktori konfigurasi cakupan pengguna. Direktori konfigurasi pengguna dapat ditemukan di seluruh platform dengan perintah Split-Path $PROFILE.CurrentUserCurrentHost.

Pengaturan konfigurasi umum

ExecutionPolicy

Penting

Konfigurasi ini hanya berlaku pada platform Windows.

Mengonfigurasi kebijakan eksekusi untuk sesi PowerShell, menentukan skrip apa yang dapat dijalankan. Secara default, PowerShell menggunakan kebijakan eksekusi yang ada.

Untuk konfigurasi AllUsers, ini menetapkan kebijakan eksekusi LocalMachine . Untuk konfigurasi CurrentUser, ini menetapkan kebijakan eksekusi CurrentUser .

Catatan

Set-ExecutionPolicy Cmdlet memodifikasi pengaturan ini dalam file konfigurasi AllUsers saat dipanggil dengan -Scope LocalMachine, dan memodifikasi pengaturan ini dalam file konfigurasi CurrentUser saat dipanggil dengan -Scope CurrentUser.

"<shell-id>:ExecutionPolicy": "<execution-policy>"

Mana:

  • <shell-id> mengacu pada ID host PowerShell saat ini. Untuk PowerShell normal, ini adalah Microsoft.PowerShell. Dalam sesi PowerShell apa pun, Anda dapat menemukannya dengan $ShellId.
  • <execution-policy> mengacu pada nama kebijakan eksekusi yang valid.

Contoh berikut menetapkan kebijakan eksekusi PowerShell ke RemoteSigned.

{
  "Microsoft.PowerShell.ExecutionPolicy": "RemoteSigned"
}

Di Windows, kunci registri yang setara dapat ditemukan di \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell bawah HKEY_LOCAL_MACHINE dan HKEY_CURRENT_USER.

PSModulePath

Mengambil alih PSModulePath pengaturan untuk sesi PowerShell ini. Jika konfigurasi adalah untuk pengguna saat ini, atur jalur modul CurrentUser . Jika konfigurasi untuk semua pengguna, atur jalur modul AllUsers .

Peringatan

Mengonfigurasi jalur modul AllUsers atau CurrentUser di sini tidak mengubah lokasi penginstalan terlingkup untuk cmdlet PowerShellGet seperti Install-Module. Cmdlet ini selalu menggunakan jalur modul default .

Jika tidak ada nilai yang diatur, PowerShell menggunakan nilai default untuk pengaturan jalur modul masing-masing. Untuk informasi selengkapnya tentang default ini, lihat about_Modules.

Pengaturan ini memungkinkan variabel lingkungan digunakan dengan menyematkannya di antara % karakter, seperti "%HOME%\Documents\PowerShell\Modules", dengan cara yang sama seperti yang diizinkan CMD. Sintaks ini juga berlaku di Linux dan macOS. Lihat contoh berikut.

"PSModulePath": "<ps-module-path>"

Mana:

  • <ps-module-path> adalah jalur absolut ke direktori modul. Untuk semua konfigurasi pengguna, ini adalah direktori modul bersama AllUsers. Untuk konfigurasi pengguna saat ini, ini adalah direktori modul CurrentUser.

Contoh ini menunjukkan PSModulePath konfigurasi untuk lingkungan Windows:

{
  "PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}

Contoh ini menunjukkan PSModulePath konfigurasi untuk lingkungan macOS atau Linux:

{
  "PSModulePath": "/opt/powershell/6/Modules"
}

Contoh ini menunjukkan penyematan variabel lingkungan dalam PSModulePath konfigurasi. Perhatikan bahwa menggunakan HOME variabel lingkungan dan pemisah / direktori, ini akan berfungsi pada Windows, macOS, dan Linux.

{
  "PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}

Contoh ini menunjukkan penyematan variabel lingkungan dalam PSModulePath konfigurasi yang hanya akan berfungsi di macOS dan Linux:

{
  "PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}

Catatan

Variabel PowerShell tidak dapat disematkan dalam PSModulePath konfigurasi. PSModulePath konfigurasi di Linux dan macOS peka huruf besar/kecil. Konfigurasi PSModulePath harus menggunakan pemisah direktori yang valid untuk platform. Di macOS dan Linux, ini berarti /. Pada Windows, dan /\ akan berfungsi.

ExperimentalFeatures

Nama fitur eksperimental untuk diaktifkan di PowerShell. Secara default, tidak ada fitur eksperimental yang diaktifkan. Nilai defaultnya adalah array kosong.

"ExperimentalFeatures": ["<experimental-feature-name>", ...]

Mana:

  • <experimental-feature-name> adalah nama fitur eksperimental untuk diaktifkan.

Contoh berikut memungkinkan fitur eksperimental PSImplicitRemoting dan PSUseAbbreviationExpansion saat PowerShell dimulai.

{
  "ExperimentalFeatures": [
    "PSImplicitRemotingBatching",
    "PSUseAbbreviationExpansion"
  ]
}

Untuk informasi selengkapnya tentang fitur eksperimental, lihat Menggunakan fitur eksperimental.

Konfigurasi pengelogan non-Windows

Penting

Opsi konfigurasi di bagian ini hanya berlaku untuk macOS dan Linux. Pengelogan untuk Windows dikelola oleh Pemantau Peristiwa Windows.

Pengelogan PowerShell di macOS dan Linux dapat dikonfigurasi dalam file konfigurasi PowerShell. Untuk deskripsi lengkap tentang pengelogan PowerShell untuk sistem non-Windows, lihat Tentang Pengelogan.

LogIdentity

Penting

Pengaturan ini hanya dapat digunakan di macOS dan Linux.

Menyetel nama identitas yang digunakan untuk menulis ke log sistem. Nilai defaultnya adalah "powershell".

"LogIdentity": "<log-identity>"

Mana:

  • <log-identity> adalah identitas string yang harus digunakan PowerShell untuk menulis ke syslog.

Catatan

Anda mungkin ingin memiliki nilai LogIdentity yang berbeda untuk setiap instans PowerShell yang berbeda yang telah Anda instal.

Dalam contoh ini, kami mengonfigurasi LogIdentity untuk rilis pratinjau PowerShell.

{
  "LogIdentity": "powershell-preview"
}

LogLevel

Penting

Pengaturan ini hanya dapat digunakan di macOS dan Linux.

Menentukan tingkat keparahan minimum di mana PowerShell harus mencatat.

"LogLevel": "<log-level>|default"

Mana:

  • <log-level> adalah salah satu dari:
    • Selalu
    • Kritis
    • Kesalahan
    • Peringatan
    • Informasi
    • Verbose
    • Debug

Catatan

Mengatur tingkat log memungkinkan semua tingkat log di atasnya.

Mengatur pengaturan ini ke default akan ditafsirkan sebagai nilai default. Nilai defaultnya adalah Informasi.

Contoh berikut menetapkan nilai ke Verbose.

{
  "LogLevel": "Verbose"
}

LogChannels

Penting

Pengaturan ini hanya dapat digunakan di macOS dan Linux.

Menentukan saluran pengelogan mana yang diaktifkan.

"LogChannels": "<log-channel>,..."

Mana:

  • <log-channel> adalah salah satu dari:
    • Operasional - mencatat informasi dasar tentang aktivitas PowerShell
    • Analitik - mencatat informasi diagnostik yang lebih rinci

Nilai defaultnya adalah Operasional. Untuk mengaktifkan kedua saluran, sertakan kedua nilai sebagai string yang dipisahkan koma tunggal. Contohnya:

{
  "LogChannels": "Operational,Analytic"
}

LogKeywords

Penting

Pengaturan ini hanya dapat digunakan di macOS dan Linux.

Menentukan bagian PowerShell mana yang dicatat. Secara default, semua kata kunci log diaktifkan. Untuk mengaktifkan beberapa kata kunci, cantumkan nilai dalam satu string yang dipisahkan koma.

"LogKeywords": "<log-keyword>,..."

Mana:

  • <log-keyword> adalah salah satu dari:
    • Runspace - manajemen runspace
    • Alur - operasi alur
    • Protokol - penanganan protokol komunikasi, seperti PSRP
    • Transportasi - dukungan lapisan transportasi, seperti SSH
    • Host - Fungsionalitas host PowerShell, misalnya interaksi konsol
    • Cmdlets -Cmdlet bawaan PowerShell
    • Serializer - logika serialisasi
    • Sesi - Status sesi PowerShell
    • ManagedPlugin - Plugin WSMan

Catatan

Umumnya disarankan untuk membiarkan nilai ini tidak diatur kecuali Anda mencoba mendiagnosis perilaku tertentu di bagian powerShell yang diketahui. Mengubah nilai ini hanya mengurangi jumlah informasi yang dicatat.

Contoh ini membatasi pengelogan ke operasi runspace, logika alur, dan penggunaan cmdlet. Semua pengelogan lainnya akan dihilangkan.

"LogKeywords": "Runspace,Pipeline,Cmdlets"

Contoh konfigurasi lainnya

Contoh konfigurasi Windows

Konfigurasi ini memiliki lebih banyak pengaturan yang diatur secara eksplisit:

  • Kebijakan eksekusi untuk penginstalan PowerShell ini adalah AllSigned
  • Jalur modul CurrentUser diatur ke direktori modul pada drive bersama
  • Fitur PSImplicitRemotingBatching eksperimental diaktifkan

Catatan

Pengaturan ExecutionPolicy dan PSModulePath di sini hanya akan berfungsi pada platform Windows, karena jalur modul menggunakan \ dan ; karakter pemisah dan kebijakan eksekusi bukan Unrestricted (satu-satunya kebijakan yang diizinkan pada platform seperti UNIX).

{
  "Microsoft.PowerShell.ExecutionPolicy": "AllSigned",
  "PSModulePath": "Z:\\Marisol's Shared Drive\\Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
}

Contoh konfigurasi non-Windows

Konfigurasi ini menetapkan sejumlah opsi yang hanya berfungsi di macOS atau Linux:

  • Jalur modul CurrentUser diatur ke direktori modul kustom di $HOME
  • Fitur eksperimental PSImplicitRemotingBatching diaktifkan
  • Tingkat pengelogan PowerShell diatur ke Verbose, untuk pengelogan lainnya
  • Penginstalan PowerShell ini menulis ke log menggunakan identitas home-powershell .
{
  "PSModulePath": "%HOME%/.powershell/Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
  "LogLevel": "Verbose",
  "LogIdentity": "home-powershell"
}

Lihat juga