about_PowerShell_Config

Kısa açıklama

PowerShell için yapılandırma dosyaları, Kayıt Defteri yapılandırmasının yerini alır.

Uzun açıklama

powershell.config.json dosyası PowerShell için yapılandırma ayarlarını içerir. PowerShell başlangıçta bu yapılandırmayı yükler. Ayarlar çalışma zamanında da değiştirilebilir. Tüm anahtarlar tüm platformlar için geçerli değildir.

Uyarı

Tanınmayan anahtarlar veya yapılandırma dosyasındaki geçersiz değerler yoksayılır. powershell.config.json dosyası geçersiz JSON içeriyorsa PowerShell etkileşimli oturum başlatamaz. Bu durumda yapılandırma dosyasını düzeltmeniz gerekir.

Ayarların özeti

powershell.config.json dosyası aşağıdaki anahtarları içerebilir:

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExperimentalFeatures
  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel
  • Microsoft.PowerShell:ExecutionPolicy
  • PSModulePath
  • PowerShellPolicies
    • ExecutionPolicy
    • ConsoleSessionConfiguration
    • ModuleLogging
    • ProtectedEventLogging
    • ScriptBlockLogging
    • ScriptExecution
    • Transcription
    • UpdatableHelp

Yapılandırma kapsamı

Yapılandırma ayarları tüm kullanıcılar için veya tek tek kullanıcı düzeyinde tanımlanabilir.

Kapsam önceliği

Birkaç özel durum dışında CurrentUser düzeyinde tanımlanan ayarlar , AllUsers düzeyi için tanımlanan ayarlardan önceliklidir.

Windows sistemlerinde:

  • Windows Grup İlkesi tarafından yönetilen ayarlar, yapılandırma dosyalarındaki ayarlardan önceliklidir.
  • Yürütme İlkesi, kapsam düzeyi ayarlarını destekler.

Tüm platformlarda:

  • sonuç değeri $env:PSModulePath , her iki kapsamdan PSModulePath anahtar değerlerinin birleştirilmesidir.

AllUsers (paylaşılan) yapılandırması

powershell.config.json dizinindeki bir $PSHOME dosyası, bu PowerShell yüklemesinden çalıştırılan tüm PowerShell oturumları için yapılandırmayı tanımlar.

Not

$PSHOME konumu, yürütülen System.Management.Automation.dll derlemesi ile aynı dizin olarak tanımlanır. Bu, barındırılan PowerShell SDK örnekleri için de geçerlidir.

CurrentUser (kullanıcı başına) yapılandırmaları

Dosyayı kullanıcı kapsamı yapılandırma dizinine yerleştirerek PowerShell'i kullanıcı başına temelinde de yapılandırabilirsiniz. Kullanıcı yapılandırma dizini aşağıdaki komutla platformlar arasında bulunabilir:

Split-Path $PROFILE.CurrentUserCurrentHost

Windows'a özgü ayarlar

Aşağıdaki ayarlar yalnızca Windows platformları için geçerlidir.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • Microsoft.PowerShell:ExecutionPolicy
  • PowerShellPolicies
    • ScriptExecution

DisableImplicitWinCompat

trueolarak ayarlandığında, bu ayar Windows PowerShell Uyumluluğu özelliğini devre dışı bırakır. Windows PowerShell Uyumluluğu, PowerShell 7'nin Windows PowerShell 5.1 modüllerini uyumluluk modunda yüklemesine olanak tanır.

Daha fazla bilgi için bkz. about_Windows_PowerShell_Compatibility.

WindowsPowerShellCompatibilityModuleDenyList

Bu ayar, Windows PowerShell Uyumluluğu özelliğine katılımın dışında tutmak istediğiniz modül adları dizisidir.

Daha fazla bilgi için bkz. about_Windows_PowerShell_Compatibility.

WindowsPowerShellCompatibilityNoClobberModuleList

Bu ayar, modülün Windows PowerShell 5.1 sürümü yüklenerek kopyalanması gereken modül adları dizisidir.

Daha fazla bilgi için bkz. about_Windows_PowerShell_Compatibility.

Microsoft. PowerShell:ExecutionPolicy

Hangi betiklerin çalıştırılabileceğini belirleyerek PowerShell oturumları için yürütme ilkesini yapılandırılır. PowerShell varsayılan olarak mevcut yürütme ilkesini kullanır.

AllUsers yapılandırmaları için bu, LocalMachine yürütme ilkesini ayarlar. CurrentUser yapılandırmaları için bu, CurrentUser yürütme ilkesini ayarlar.

Aşağıdaki örnek PowerShell'in yürütme ilkesini RemoteSignedolarak ayarlar.

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

Daha fazla bilgi için bkz. about_Execution_Policies.

Windows dışı platformlar için ayarlar

Aşağıdaki ayarlar yalnızca Linux ve macOS platformları için geçerlidir.

Linux ve macOS için PowerShell günlüğünü yapılandırmak için aşağıdaki anahtarları kullanın.

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

Windows olmayan sistemler için PowerShell günlüğünün tam açıklaması için bkz. about_Logging_Non-Windows.

Yaygın yapılandırma ayarları

Aşağıdaki ayarlar desteklenen tüm platformlarda kullanılabilir.

  • ExperimentalFeatures
  • PSModulePath
  • PowerShellPolicies

ExperimentalFeatures

PowerShell'de etkinleştirecek deneysel özelliklerin adları. Varsayılan değer boş bir dizidir.

Aşağıdaki örnek, PowerShell başlatıldığında PSCommandNotFoundSuggestion ve PSSubsystemPluginModel deneysel özellikleri etkinleştirir.

Örnek:

{
  "ExperimentalFeatures": [
    "PSCommandNotFoundSuggestion",
    "PSSubsystemPluginModel"
  ]
}

Deneysel özellikler hakkında daha fazla bilgi için bkz. Deneysel özellikleri kullanma.

PSModulePath

Bu PowerShell oturumu için PSModulePath ayarlarını geçersiz kılar. Yapılandırma geçerli kullanıcıya yönelikse CurrentUser modül yolunu ayarlar. Yapılandırma tüm kullanıcılar içinse AllUsers modül yolunu ayarlar.

Uyarı

AllUsers veya CurrentUser modül yolunu yapılandırmak, Install-Modulegibi PowerShellGet cmdlet'lerinin kapsamlı yükleme konumunu değiştirmez. Bu cmdlet'ler her zaman varsayılan modül yollarını kullanır.

Değer ayarlı değilse, PowerShell ilgili modül yolu ayarı için varsayılan değeri kullanır. Bu varsayılanlar hakkında daha fazla bilgi için bkz. about_PSModulePath.

Bu ayar, ortam değişkenlerinin Windows Komut Kabuğu'nda izin verdiği şekilde %gibi "%HOME%\Documents\PowerShell\Modules" karakterlerin arasına eklenerek kullanılmasını sağlar. Bu söz dizimi Linux ve macOS için de geçerlidir. Örnekler için aşağıya bakın.

Bu örnekte Bir Windows ortamı için PSModulePath yapılandırması gösterilmektedir:

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

Bu örnekte macOS veya Linux ortamı için PSModulePath yapılandırması gösterilmektedir:

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

Bu örnekte bir ortam değişkeninin PSModulePath yapılandırmasına katıştırılması gösterilmektedir. HOME ortam değişkeni ve / dizin ayırıcısı kullanıldığında bu söz diziminin Windows, macOS ve Linux'ta çalıştığını unutmayın.

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

Bu örnekte yalnızca macOS ve Linux üzerinde çalışan bir ortam değişkeni kullanılır:

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

Not

PowerShell değişkenleri PSModulePath yapılandırmalarına eklenemez. Linux ve macOS'ta PSModulePath yapılandırmaları büyük/küçük harfe duyarlıdır. PSModulePath yapılandırması platform için geçerli dizin ayırıcıları kullanmalıdır. macOS ve Linux'ta bu, /anlamına gelir. Windows'ta hem / hem de \ çalışır.

PowerShellPolicies

PowerShellPolicies, çeşitli ayarlar için anahtar-değer çiftleri içeren bir JSON nesnesidir. ScriptExecution Ayar dışında tüm ayarlar Windows, Linux ve macOS platformlarında kullanılabilir.

PowerShellPolicies aşağıdaki alt anahtarları içerir:

  • ConsoleSessionConfiguration
  • ModuleLogging
  • ProtectedEventLogging
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

Windows bu ayarlar Windows Grup İlkesi tarafından yönetilebilir. Grup İlkesi ayarları önceliklidir. Bir değer Grup İlkesi tarafından ayarlanmadıysa PowerShell, JSON dosyasındaki değerleri kapsam önceliği sırasına göre uygular.

Grup İlkesi, Windows sistemlerde bu ayarları yönetmek için önerilen yoldur. Daha fazla bilgi için bkz. about_Group_Policy_Settings.

ConsoleSessionConfiguration

Bu ayar, tüm PowerShell oturumları için kullanılacak oturum yapılandırmasını belirtir. Bu, varsayılan PowerShell uzaktan iletişim uç noktaları veya belirli kullanıcı rolü özelliklerine sahip özel uç nokta dahil olmak üzere yerel makinede kayıtlı herhangi bir uç nokta olabilir.

Bu anahtar iki alt anahtar içerir:

  • EnableConsoleSessionConfiguration - Oturum yapılandırmalarını etkinleştirmek için değerini trueolarak ayarlayın. Varsayılan olarak, bu değer false.

  • ConsoleSessionConfigurationName - PowerShell'in çalıştırıldığı yapılandırma uç noktasının adını belirtir. Varsayılan olarak tanımlı bir oturum yoktur.

{
  "ConsoleSessionConfiguration": {
    "EnableConsoleSessionConfiguration": false,
    "ConsoleSessionConfigurationName" : []
  }
}

Daha fazla bilgi için bkz. about_Session_Configurations.

ModuleLogging

Bu ayar, PowerShell modülleri için günlüğe kaydetme davranışını denetler. Bu ayar iki alt anahtar içerir:

  • EnableModuleLogging - Modül günlüğünü etkinleştirmek için değerini trueolarak ayarlayın. Etkinleştirildiğinde, belirtilen modüllerin üyeleri için işlem hattı yürütme olayları PowerShell günlük dosyalarına kaydedilir.
  • ModuleNames - Günlüğe kaydedilmesi gereken modüllerin adını belirtir.

Örnek:

{
  "ModuleLogging": {
    "EnableModuleLogging": true,
    "ModuleNames" : [
        "PSReadLine",
        "PowerShellGet"
    ]
  }
}

ProtectedEventLogging

Bu ayar, Korumalı Olay Günlüğü'ne yapılandırmanıza olanak tanır. Bu ayar iki alt anahtar içerir:

  • EnableProtectedEventLogging - Bu ilke ayarını etkinleştirirseniz, bunu destekleyen bileşenler günlük verilerini günlüğe yazmadan önce şifrelemek için sağladığınız sertifikayı kullanır. Veriler Şifreleme İleti söz dizimi (CMS) standardı kullanılarak şifrelenir. Sertifikanın özel anahtarına erişiminiz varsa, bu şifrelenmiş iletilerin şifresini çözmek için Unprotect-CmsMessage kullanabilirsiniz.
  • EncryptionCertificate - Şifreleme için kullanılacak sertifikaların bir listesini sağlar.

Örnek:

{
  "ProtectedEventLogging": {
    "EnableProtectedEventLogging": false,
    "EncryptionCertificate": [
      "Joe"
    ]
  }
}

ScriptBlockLogging

Bu ayar tüm PowerShell betik girişlerinin günlüğe kaydedilmesini denetler. Bu ayar iki alt anahtar içerir:

  • EnableScriptBlockLogging - Bu ilke ayarını etkinleştirirseniz PowerShell etkileşimli olarak veya otomasyon aracılığıyla çağrılsa bile komutların, betik engellemelerinin, işlevlerin ve betiklerin işlenmesini günlüğe kaydeder.
  • EnableScriptBlockInvocationLogging - betik engelleme başlatma ve durdurma olaylarının günlüğe kaydedilmesini sağlar.

Örnek:

"ScriptBlockLogging": {
  "EnableScriptBlockInvocationLogging": true,
  "EnableScriptBlockLogging": false
}

ScriptExecution

ScriptExecution ayarı, PowerShell Yürütme İlkesi'ni ayarlamak için kullanılır. Bu, daha önce açıklanan ayardan Microsoft.PowrShell:ExecutionPolicy önceliklidir.

Örnek:

{
    "PowerShellPolicies": {
        "ScriptExecution": {
            "ExecutionPolicy": "RemoteSigned"
        }
    }
}

Not

Bu yalnızca Windows bir ayardır.

Transkripsiyon

Bu ilke ayarı, metin tabanlı transkriptlerde PowerShell komutlarının giriş ve çıkışını yakalamanızı sağlar. Bu ilke ayarını etkinleştirirseniz, PowerShell tüm PowerShell oturumları için transkripsiyonu etkinleştirir.

Bu ayar, Transkripsiyonun PowerShell'de nasıl çalıştığını denetler. Bu ayar üç alt anahtar içerir:

  • EnableTranscripting - Bu ayar etkinleştirildiğinde PowerShell, yapılandırılmış konumda transkripsiyon günlük dosyaları oluşturur.
  • EnableInvocationHeader - PowerShell varsayılan olarak transkripsiyon günlük dosyasının en üstünde bir üst bilgi içerir. Bu ayarı kullanarak üst bilgiyi devre dışı bırakabilirsiniz.
  • OutputDirectory - Bu ayar transkripsiyon günlük dosyalarını varsayılan konum yerine merkezi bir konumda toplamanıza olanak tanır.

Örnek:

{
    "Transcription": {
        "EnableTranscripting": true,
        "EnableInvocationHeader": true,
        "OutputDirectory": "C:\\tmp"
      }
}

Daha fazla bilgi için bkz. Start-Transcript .

Güncelleştirilebilir Yardım

Bu ilke ayarı, cmdlet'inde Update-Help parametresinin varsayılan değerini ayarlamanıza olanak tanır. Bu varsayılan değer, SourcePath parametresi kullanılarak farklı bir değer belirtilerek geçersiz kılınabilir.

Örnek:

{
    "UpdatableHelp": {
      "DefaultSourcePath": "F:\\temp"
    }
}