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 ke true. Secara default, nilai ini adalah false.

  • 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 konfigurasi sesi, atur nilai ke true. 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 menggunakan Unprotect-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"
    }
}