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. Tato nastavení byla dříve uložena v registru Windows pro PowerShell, ale teď jsou obsažena v souboru, který umožňuje konfiguraci v systémech macOS a Linux.
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
Ne všechny klíče platí pro všechny platformy. Klíč PowerShellPolicies
obsahuje podklíče, které zrcadlí nastavení spravovaná zásadami skupiny oken. Tyto podklíče platí také pro všechny platformy, pokud jsou definovány na kořenové úrovni souboru JSON.
Upozorňující
Nerozpoznané klíče nebo neplatné hodnoty v konfiguračním souboru se ignorují. powershell.config.json
Pokud soubor obsahuje neplatný kód JSON, PowerShell nemůže spustit interaktivní relaci. Pokud k tomu dojde, musíte opravit konfigurační soubor.
Obor konfigurace
Nastavení konfigurace lze definovat pro všechny uživatele nebo na úrovni jednotlivých uživatelů.
Konfigurace AllUsers (sdílená)
Soubor powershell.config.json
v $PSHOME
adresáři 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 lze najít na různých platformách pomocí příkazu Split-Path $PROFILE.CurrentUserCurrentHost
.
Priorita oboru
V systému Windows mají nastavení spravovaná zásadami skupiny Systému Windows přednost před nastavením v konfiguračním souboru. Zásady skupiny neexistují na platformách jiných než Windows.
Po zásadách skupiny mají nastavení definovaná na úrovni AllUsers přednost před nastavením definovaným pro úroveň CurrentUser.
Nastavení specifická pro Windows
Následující nastavení platí jenom pro platformy Windows.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
Pokud je tato možnost nastavená, true
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.
ExecutionPolicy
Důležité
Tato konfigurace platí jenom na platformách Windows.
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í.
Pro konfigurace AllUsers se nastaví zásady spuštění LocalMachine . Pro konfigurace CurrentUser se nastaví zásady spuštění CurrentUser .
Následující příklad nastaví zásady spouštění PowerShellu na RemoteSigned
.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Další informace najdete v tématu about_Execution_Policies.
PowerShellPolicies
Systém Windows má několik nastavení, která je možné spravovat pomocí zásad skupiny. Obvykle jsou tato nastavení uložena v registru Systému Windows. Toto nastavení lze také definovat v powershell.config.json
souboru.
Jedná se PowerShellPolicies
o objekt JSON, který obsahuje páry klíč-hodnota pro různá nastavení zásad. Tato nastavení zásad lze také uvést na kořenové úrovni souboru JSON mimo PowerShellPolicies
objekt. Toto nastavení může obsahovat následující podklíče:
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Toto ScriptExecution
nastavení slouží k nastavení zásad spouštění PowerShellu.
Toto nastavení má přednost před ExecutionPolicy
výše popsaným nastavením.
Příklad:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Popis ostatních nastavení zásad najdete v popisu v části Společná nastavení konfigurace.
Ve Windows PowerShell hledá nastavení v registru. Všechna nastavení nalezená v registru mají přednost. V dalším PowerShellu se načte konfigurace JSON. Všechna nastavení nalezená PowerShellPolicies
v registru a nedefinovaná v registru mají přednost před nastavením nalezená na kořenové úrovni konfigurace JSON.
Další informace najdete v tématu about_Group_Policy_Settings.
Nastavení pro platformy mimo Windows
Následující nastavení platí jenom pro platformy Linux a macOS.
Následující klíče slouží ke konfiguraci 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.
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
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
- chcete-li povolit konfigurace relace, nastavte hodnotu natrue
. Ve výchozím nastavení jefalse
tato hodnota .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.
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 povolí experimentální funkce PSCommandNotFoundSuggestion a PSSubsystemPluginModel 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í.
ModuleLogging
Toto nastavení řídí chování protokolování pro moduly PowerShellu. Nastavení obsahuje dva podklíče:
EnableModuleLogging
- chcete-li povolit protokolování modulu, nastavte hodnotu natrue
. 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). Tyto šifrované zprávy můžete dešifrovatUnprotect-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"
]
}
}
PSModulePath
PSModulePath
Přepíše nastavení pro tuto relaci PowerShellu. Pokud je konfigurace pro aktuálního uživatele, nastaví cestu modulu CurrentUser . Pokud je konfigurace určená pro všechny uživatele, nastaví cestu modulu AllUsers .
Upozorňující
Konfigurace cesty modulu AllUsers nebo CurrentUser zde nemění umístění instalace s vymezeným oborem 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í používaly vložením mezi %
znaky, jako je "%HOME%\Documents\PowerShell\Modules"
například , stejným způsobem jako prostředí Windows Command Shell umožňuje. Tato syntaxe platí také pro Linux a macOS. Příklady najdete níže.
Tento příklad ukazuje PSModulePath
konfiguraci pro prostředí Windows:
{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
Tento příklad ukazuje PSModulePath
konfiguraci pro prostředí macOS nebo Linux:
{
"PSModulePath": "/opt/powershell/6/Modules"
}
Tento příklad ukazuje vložení proměnné prostředí do PSModulePath
konfigurace. Všimněte si, že použití HOME
proměnné prostředí a /
oddělovače adresářů tato syntaxe funguje ve Windows, macOS a Linuxu.
{
"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 není možné vkládat do PSModulePath
konfigurací.
PSModulePath
konfigurace v Linuxu a macOS rozlišují malá a velká písmena. Konfigurace PSModulePath
musí pro platformu používat platné oddělovače adresářů. V systému macOS a Linux to znamená /
. Ve Windows i /
\
v práci.
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ů, bloků 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
}
Přepis
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é, Vytvoří PowerShell 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"
}
}