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.
Ringkasan pengaturan
File powershell.config.json
dapat berisi kunci berikut:
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExperimentalFeatures
LogChannels
LogIdentity
LogKeywords
LogLevel
Microsoft.PowerShell:ExecutionPolicy
PSModulePath
PowerShellPolicies
ExecutionPolicy
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Tidak semua kunci berlaku untuk semua platform. Kunci PowerShellPolicies
berisi subkunjen yang mencerminkan pengaturan yang dikelola oleh Kebijakan Grup Jendela. Subkey tersebut juga berlaku untuk semua platform ketika didefinisikan pada tingkat akar file JSON.
Peringatan
Kunci yang tidak dikenali atau nilai yang tidak valid dalam file konfigurasi diabaikan. powershell.config.json
Jika file berisi JSON yang tidak valid, PowerShell tidak dapat memulai sesi interaktif. Jika ini terjadi, Anda harus memperbaiki file konfigurasi.
Cakupan konfigurasi
Pengaturan konfigurasi dapat ditentukan untuk semua pengguna atau di tingkat pengguna individual.
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 eksekusi System.Management.Automation.dll assembly. 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
.
Prioritas cakupan
Pada Windows, pengaturan yang dikelola oleh Kebijakan Grup Windows lebih diutamakan daripada pengaturan dalam file konfigurasi. Kebijakan Grup tidak ada di platform non-Windows.
Setelah Kebijakan Grup, pengaturan yang ditentukan di tingkat AllUsers lebih diutamakan daripada pengaturan yang ditentukan untuk tingkat CurrentUser .
Pengaturan khusus Windows
Pengaturan berikut ini hanya berlaku untuk platform Windows.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
Saat diatur ke true
, pengaturan ini menonaktifkan fitur Kompatibilitas Windows PowerShell. Kompatibilitas Windows PowerShell memungkinkan PowerShell 7 memuat modul Windows PowerShell 5.1 dalam mode kompatibilitas.
Untuk informasi selengkapnya, lihat about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityModuleDenyList
Pengaturan ini adalah array nama modul yang ingin Anda kecualikan dari partisipasi dalam fitur Kompatibilitas Windows PowerShell.
Untuk informasi selengkapnya, lihat about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityNoClobberModuleList
Pengaturan ini adalah array nama modul yang tidak boleh disumbat dengan memuat modul versi Windows PowerShell 5.1.
Untuk informasi selengkapnya, lihat about_Windows_PowerShell_Compatibility.
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 .
Contoh berikut menetapkan kebijakan eksekusi PowerShell ke RemoteSigned
.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Untuk informasi selengkapnya, lihat about_Execution_Policies.
PowerShellPolicies
Windows memiliki beberapa pengaturan yang dapat dikelola oleh Kebijakan Grup. Biasanya, pengaturan tersebut disimpan di registri Windows. Pengaturan tersebut powershell.config.json
juga dapat didefinisikan dalam file.
PowerShellPolicies
adalah objek JSON yang berisi pasangan kunci-nilai untuk berbagai pengaturan kebijakan. Pengaturan kebijakan tersebut juga dapat dicantumkan di tingkat akar file JSON, di luar PowerShellPolicies
objek. Pengaturan ini dapat berisi subkunjuk berikut:
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Pengaturan ScriptExecution
digunakan untuk mengatur Kebijakan Eksekusi PowerShell.
Ini lebih diutamakan daripada pengaturan yang ExecutionPolicy
dijelaskan di atas.
Contoh:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Untuk deskripsi pengaturan kebijakan lainnya, lihat deskripsi di bagian Pengaturan konfigurasi umum.
Di Windows, PowerShell mencari pengaturan di registri. Pengaturan apa pun yang ditemukan dalam registri memiliki prioritas. PowerShell berikutnya membaca konfigurasi JSON. Pengaturan apa pun yang ditemukan di bawah PowerShellPolicies
, dan tidak ditentukan dalam registri, lebih diutamakan daripada pengaturan yang ditemukan di tingkat akar konfigurasi JSON.
Untuk mengetahui informasi selengkapnya, lihat about_Group_Policy_Settings.
Pengaturan untuk platform non-Windows
Pengaturan berikut hanya berlaku untuk platform Linux dan macOS.
Kunci berikut digunakan untuk mengonfigurasi pengelogan PowerShell untuk Linux dan macOS.
LogChannels
LogIdentity
LogKeywords
LogLevel
Untuk deskripsi lengkap tentang pengelogan PowerShell untuk sistem non-Windows, lihat about_Logging_Non-Windows.
Pengaturan konfigurasi umum
Pengaturan berikut tersedia di semua platform yang didukung.
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
ConsoleSessionConfiguration
Pengaturan ini menentukan konfigurasi sesi yang akan digunakan untuk semua sesi PowerShell. 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.
Kunci ini berisi dua subkunjuk:
EnableConsoleSessionConfiguration
- untuk mengaktifkan konfigurasi sesi, atur nilai ketrue
. Secara default, nilai ini adalahfalse
.ConsoleSessionConfigurationName
- Menentukan nama titik akhir konfigurasi tempat PowerShell dijalankan. Secara default, tidak ada sesi yang ditentukan.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Untuk informasi selengkapnya, lihat about_Session_Configurations.
ExperimentalFeatures
Nama fitur eksperimental untuk diaktifkan di PowerShell. Nilai defaultnya adalah array kosong.
Contoh berikut memungkinkan fitur eksperimental PSCommandNotFoundSuggestion dan PSSubsystemPluginModel saat PowerShell dimulai.
Contoh:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Untuk informasi selengkapnya tentang fitur eksperimental, lihat Menggunakan fitur eksperimental.
ModuleLogging
Pengaturan ini mengontrol perilaku pengelogan untuk modul PowerShell. Pengaturan berisi dua subkunjuk:
EnableModuleLogging
- untuk mengaktifkan pengelogan modul, atur nilainya ketrue
. Saat diaktifkan, peristiwa eksekusi alur untuk anggota modul yang ditentukan direkam dalam file log PowerShell.ModuleNames
- Menentukan nama modul yang harus dicatat.
Contoh:
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
Pengaturan ini memungkinkan Anda mengonfigurasi Pembuatan Log Peristiwa Terproteksi. Pengaturan berisi dua subkunjuk:
EnableProtectedEventLogging
- Jika Anda mengaktifkan pengaturan kebijakan ini, komponen yang mendukungnya menggunakan sertifikat yang Anda berikan untuk mengenkripsi data log sebelum menulisnya ke log. Data dienkripsi menggunakan standar Sintaks Pesan Kriptografi (CMS). Anda dapat menggunakanUnprotect-CmsMessage
untuk mendekripsi pesan terenkripsi ini, jika Anda memiliki akses ke kunci privat sertifikat.EncryptionCertificate
- Menyediakan daftar nama sertifikat yang akan digunakan untuk enkripsi.
Contoh:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Mengambil alih PSModulePath
pengaturan untuk sesi PowerShell ini. Jika konfigurasi 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_PSModulePath.
Pengaturan ini memungkinkan variabel lingkungan digunakan dengan menyematkannya di antara %
karakter, seperti "%HOME%\Documents\PowerShell\Modules"
, dengan cara yang sama seperti yang diizinkan Windows Command Shell. Sintaks ini juga berlaku di Linux dan macOS. Lihat contoh berikut.
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, sintaks ini berfungsi pada Windows, macOS, dan Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
Contoh ini menggunakan variabel lingkungan yang hanya 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 /
. Di Windows, baik /
dan \
bekerja.
ScriptBlockLogging
Pengaturan ini mengontrol pengelogan semua input skrip PowerShell. Pengaturan ini berisi dua subkunjuk:
EnableScriptBlockLogging
- Jika Anda mengaktifkan pengaturan kebijakan ini, PowerShell mencatat pemrosesan perintah, blok skrip, fungsi, dan skrip baik dipanggil secara interaktif, atau melalui otomatisasi.EnableScriptBlockInvocationLogging
- memungkinkan pengelogan blok skrip memulai dan menghentikan peristiwa.
Contoh:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Transkripsi
Pengaturan kebijakan ini memungkinkan Anda mengambil input dan output perintah PowerShell dalam transkrip berbasis teks. Jika Anda mengaktifkan pengaturan kebijakan ini, PowerShell mengaktifkan transkripsi untuk semua sesi PowerShell.
Pengaturan ini mengontrol cara kerja transkripsi di PowerShell. Pengaturan ini berisi tiga subkunjuk:
EnableTranscripting
- Ketika pengaturan ini diaktifkan, PowerShell membuat file log transkripsi di lokasi yang dikonfigurasi.EnableInvocationHeader
- Secara default, PowerShell menyertakan header di bagian atas file log transkripsi. Anda dapat menonaktifkan header menggunakan pengaturan ini.OutputDirectory
- Pengaturan ini memungkinkan Anda untuk mengumpulkan file log transkripsi di lokasi pusat alih-alih lokasi default.
Contoh:
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "c:\\tmp"
}
}
Untuk informasi selengkapnya, lihat Start-Transcript.
UpdatableHelp
Pengaturan kebijakan ini memungkinkan Anda mengatur nilai default parameter SourcePath pada Update-Help
cmdlet. Nilai default ini dapat diganti dengan menentukan nilai yang berbeda menggunakan parameter SourcePath .
Contoh:
{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}