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á, truezakáž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á PowerShellPoliciesv 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 jiné platformy než 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 na true. Ve výchozím nastavení je falsetato 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 konfigurace relace, 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). Tyto šifrované zprávy můžete dešifrovat 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"
    ]
  }
}

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"
    }
}