Sdílet prostřednictvím


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.

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.

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 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í 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á 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.

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í.

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.

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 souboru powershell.config.json.

PowerShellPolicies je objekt JSON, který obsahuje páry klíč-hodnota pro různá nastavení zásad. Tato nastavení zásad je také možné uvést na kořenové úrovni souboru JSON mimo objekt PowerShellPolicies. Toto nastavení může obsahovat následující podklíče:

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

Nastavení ScriptExecution slouží k nastavení zásad spouštění PowerShellu. To má přednost před nastavením ExecutionPolicy popsaným výše.

Příklad:

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

Popis ostatních nastavení zásad najdete v popisu v části Nastavení společné 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á v PowerShellPoliciesa nedefinovaná v registru mají přednost před nastavením na kořenové úrovni konfigurace JSON.

Další informace naleznete 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 – 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.

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í.

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

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\\6\\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 \.

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
}

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