about_PowerShell_Config

Krátký popis

Konfigurační soubory pro PowerShell a nahrazení konfigurace registru

Dlouhý popis

Soubor powershell.config.json obsahuje nastavení konfigurace pro PowerShell. PowerShell tuto konfiguraci načte při spuštění. Nastavení lze také upravit za běhu. Ne všechny klíče platí pro všechny platformy.

Varování

Nerozpoznané klíče nebo neplatné hodnoty v konfiguračním souboru se ignorují. Pokud soubor powershell.config.json obsahuje neplatný kód JSON, PowerShell nemůže spustit interaktivní relaci. Pokud k tomu dojde, musíte opravit konfigurační soubor.

Souhrn nastavení

Soubor powershell.config.json může obsahovat následující klíče:

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

Obor konfigurace

Nastavení konfigurace lze definovat pro všechny uživatele nebo na úrovni jednotlivých uživatelů.

Priorita oboru

Kromě několika speciálních případů mají nastavení definovaná na úrovni CurrentUser přednost před nastavením definovaným pro úroveň AllUsers .

V systémech Windows:

  • Nastavení spravovaná pomocí zásad skupiny Windows mají přednost před nastavením v konfiguračních souborech.
  • Zásady spouštění podporují nastavení na úrovni oboru.

Na všech platformách:

  • Výsledná hodnota $env:PSModulePath je sloučení hodnot PSModulePath klíče z obou oborů.

Konfigurace AllUsers (sdílená)

Soubor powershell.config.json v adresáři $PSHOME definuje konfiguraci pro všechny relace PowerShellu spuštěné z této instalace PowerShellu.

Poznámka

Umístění $PSHOME je definováno jako stejný adresář jako spuštěné System.Management.Automation.dll sestavení. To platí i pro hostované instance sady PowerShell SDK.

Konfigurace CurrentUser (podle uživatele)

PowerShell můžete také nakonfigurovat pro jednotlivé uživatele tak, že soubor umístíte do konfiguračního adresáře oboru uživatele. Adresář konfigurace uživatele najdete na různých platformách pomocí následujícího příkazu:

Split-Path $PROFILE.CurrentUserCurrentHost

Nastavení specifická pro Windows

Následující nastavení platí jenom pro platformy Windows.

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

DisableImplicitWinCompat

Pokud je tato možnost nastavená na true, toto nastavení zakáže funkci kompatibility prostředí Windows PowerShell. Kompatibilita prostředí Windows PowerShell umožňuje PowerShellu 7 načíst moduly Windows PowerShellu 5.1 v režimu kompatibility.

Další informace najdete v tématu about_Windows_PowerShell_Compatibility.

WindowsPowerShellCompatibilityModuleDenyList

Toto nastavení je pole názvů modulů, které chcete vyloučit z účasti v funkci kompatibility prostředí Windows PowerShell.

Další informace najdete v tématu about_Windows_PowerShell_Compatibility.

WindowsPowerShellCompatibilityNoClobberModuleList

Toto nastavení je pole názvů modulů, které by neměly být zahlcené načtením verze prostředí Windows PowerShell 5.1 modulu.

Další informace najdete v tématu about_Windows_PowerShell_Compatibility.

Microsoft. PowerShell:ExecutionPolicy

Konfiguruje zásady spouštění pro relace PowerShellu a určuje, jaké skripty je možné spustit. PowerShell ve výchozím nastavení používá existující zásady spouštění.

V případě konfigurace AllUsers nastaví LocalMachine zásady provádění. V případě konfigurace CurrentUser nastavíte zásadu spuštění CurrentUser.

Následující příklad nastaví zásady spouštění PowerShellu na RemoteSigned.

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

Další informace naleznete v tématu about_Execution_Policies.

Nastavení pro platformy mimo Windows

Následující nastavení platí jenom pro platformy Linux a macOS.

Pomocí následujících klíčů nakonfigurujte protokolování PowerShellu pro Linux a macOS.

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

Úplný popis protokolování PowerShellu pro systémy mimo Windows najdete v tématu about_Logging_Non-Windows.

Běžná nastavení konfigurace

Následující nastavení jsou k dispozici na všech podporovaných platformách.

  • ExperimentalFeatures
  • PSModulePath
  • PowerShellPolicies

Experimentální funkce

Názvy experimentálních funkcí, které se mají povolit v PowerShellu. Výchozí hodnota je prázdné pole.

Následující příklad umožňuje PSCommandNotFoundSuggestion a PSSubsystemPluginModel experimentální funkce při spuštění PowerShellu.

Příklad:

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

Další informace o experimentálních funkcích najdete v tématu Použití experimentálních funkcí.

PSModulePath

Přepíše nastavení PSModulePath pro tuto relaci PowerShellu. Pokud je konfigurace pro aktuálního uživatele, nastaví CurrentUser cestu modulu. Pokud je konfigurace pro všechny uživatele, nastaví cestu modulu AllUsers.

Varování

Konfigurace cesty modulu AllUsers nebo CurrentUser se nezmění umístění vymezené instalace pro rutiny PowerShellGet, jako je Install-Module . Tyto rutiny vždy používají výchozí cesty k modulům.

Pokud není nastavená žádná hodnota, PowerShell použije výchozí hodnotu pro nastavení cesty k příslušnému modulu. Další informace o těchto výchozích nastaveních najdete v tématu about_PSModulePath.

Toto nastavení umožňuje, aby proměnné prostředí bylo možné použít vložením mezi % znaky, jako je "%HOME%\Documents\PowerShell\Modules", stejným způsobem, jaký umožňuje prostředí Windows Command Shell. Tato syntaxe platí také pro Linux a macOS. Příklady najdete níže.

Tento příklad ukazuje konfiguraci PSModulePath pro prostředí Windows:

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

Tento příklad ukazuje konfiguraci PSModulePath pro prostředí macOS nebo Linux:

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

Tento příklad ukazuje vložení proměnné prostředí do konfigurace PSModulePath. Všimněte si, že použití proměnné prostředí HOME a oddělovače adresářů / funguje v systémech Windows, macOS a Linux.

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

V tomto příkladu se používá proměnná prostředí, která funguje jenom v systémech macOS a Linux:

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

Poznámka

Proměnné PowerShellu nelze vkládat do konfigurací PSModulePath. PSModulePath konfigurace v Linuxu a macOS rozlišují malá a velká písmena. Konfigurace PSModulePath musí používat platné oddělovače adresářů pro platformu. V systému macOS a Linux to znamená /. Ve Windows fungují / i \.

PowerShellPolicies

Jedná se PowerShellPolicies o objekt JSON, který obsahuje páry klíč-hodnota pro různá nastavení. ScriptExecution Kromě nastavení je možné všechna nastavení použít na platformách Windows, Linux a macOS.

PowerShellPolicies obsahuje následující podklíče:

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

Na Windows je možné tato nastavení spravovat pomocí zásad skupiny Windows. Přednost mají nastavení zásad skupiny. Pokud zásada skupiny nenastaví hodnotu, PowerShell použije hodnoty v souboru JSON v pořadí priority oboru .

Zásady skupiny se doporučují ke správě těchto nastavení v Windows systémech. Další informace naleznete v tématu about_Group_Policy_Settings.

ConsoleSessionConfiguration

Toto nastavení určuje konfiguraci relace, která se má použít pro všechny relace PowerShellu. Může se jednat o libovolný koncový bod zaregistrovaný na místním počítači, včetně výchozích koncových bodů vzdálené komunikace PowerShellu nebo vlastního koncového bodu s konkrétními funkcemi role uživatele.

Tento klíč obsahuje dva podklíče:

  • EnableConsoleSessionConfiguration – pokud chcete povolit konfigurace relací, nastavte hodnotu na true. Ve výchozím nastavení je tato hodnota false.

  • ConsoleSessionConfigurationName – Určuje název koncového bodu konfigurace, ve kterém se PowerShell spouští. Ve výchozím nastavení není definována žádná relace.

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

Další informace najdete v tématu about_Session_Configurations.

ModuleLogging

Toto nastavení řídí chování protokolování pro moduly PowerShellu. Nastavení obsahuje dva podklíče:

  • EnableModuleLogging – pokud chcete povolit protokolování modulu, nastavte hodnotu na true. Pokud je tato možnost povolená, události spuštění kanálu pro členy zadaných modulů se zaznamenávají v souborech protokolů PowerShellu.
  • ModuleNames – Určuje název modulů, které se mají protokolovat.

Příklad:

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

ProtectedEventLogging

Toto nastavení umožňuje nakonfigurovat protokolování chráněných událostí. Nastavení obsahuje dva podklíče:

  • EnableProtectedEventLogging – Pokud povolíte toto nastavení zásad, komponenty, které ho podporují, používají certifikát, který zadáte k šifrování dat protokolu před zápisem do protokolu. Data se šifrují pomocí standardu CMS (Cryptographic Message Syntax). K dešifrování těchto šifrovaných zpráv můžete použít Unprotect-CmsMessage, pokud máte přístup k privátnímu klíči certifikátu.
  • EncryptionCertificate – poskytuje seznam názvů certifikátů, které se mají použít k šifrování.

Příklad:

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

ScriptBlockLogging

Toto nastavení řídí protokolování všech vstupních skriptů PowerShellu. Toto nastavení obsahuje dva podklíče:

  • EnableScriptBlockLogging – Pokud povolíte toto nastavení zásad, PowerShell zaznamená zpracování příkazů, skriptů, funkcí a skriptů, ať už interaktivně, nebo prostřednictvím automatizace.
  • EnableScriptBlockInvocationLogging – umožňuje protokolování událostí spuštění a zastavení bloku skriptu.

Příklad:

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

ScriptExecution

Nastavení ScriptExecution slouží k nastavení zásad spouštění PowerShellu. To má přednost před Microsoft.PowrShell:ExecutionPolicy nastavením popsaným dříve.

Příklad:

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

Poznámka

Toto je nastavení pouze Windows.

Transkripce

Toto nastavení zásad umožňuje zachytit vstup a výstup příkazů PowerShellu v textových přepisech. Pokud povolíte toto nastavení zásad, PowerShell povolí přepis pro všechny relace PowerShellu.

Toto nastavení určuje, jak funguje přepis v PowerShellu. Toto nastavení obsahuje tři podklíče:

  • EnableTranscripting – Pokud je toto nastavení povolené, PowerShell vytvoří soubory protokolu přepisu v nakonfigurovaném umístění.
  • EnableInvocationHeader – PowerShell ve výchozím nastavení obsahuje záhlaví v horní části souboru protokolu přepisu. Záhlaví můžete zakázat pomocí tohoto nastavení.
  • OutputDirectory – Toto nastavení umožňuje shromažďovat soubory protokolu přepisu v centrálním umístění místo výchozího umístění.

Příklad:

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

Další informace najdete v tématu start-přepis .

Aktualizovatelnáhelp

Toto nastavení zásad umožňuje nastavit výchozí hodnotu parametru SourcePath v rutině Update-Help. Tuto výchozí hodnotu lze přepsat zadáním jiné hodnoty pomocí parametru SourcePath.

Příklad:

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