about_PowerShell_Config
Kort beskrivning
Konfigurationsfiler för PowerShell, som ersätter registerkonfiguration.
Lång beskrivning
Filen powershell.config.json
innehåller konfigurationsinställningar för PowerShell. PowerShell läser in den här konfigurationen vid start. Inställningarna kan också ändras vid körning. Tidigare lagrades de här inställningarna i Windows-registret för PowerShell, men finns nu i en fil för att aktivera konfiguration på macOS och Linux.
Sammanfattning av inställningar
Filen powershell.config.json
kan innehålla följande nycklar:
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExperimentalFeatures
LogChannels
LogIdentity
LogKeywords
LogLevel
Microsoft.PowerShell:ExecutionPolicy
PSModulePath
PowerShellPolicies
ExecutionPolicy
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Alla nycklar gäller inte för alla plattformar. Nyckeln PowerShellPolicies
innehåller undernycklar som speglar inställningarna som hanteras av Window grupprincip. Dessa undernycklar gäller även för alla plattformar när de definieras på JSON-filens rotnivå.
Varning
Okända nycklar eller ogiltiga värden i konfigurationsfilen ignoreras. powershell.config.json
Om filen innehåller ogiltig JSON kan PowerShell inte starta en interaktiv session. Om detta inträffar måste du åtgärda konfigurationsfilen.
Konfigurationsomfång
Konfigurationsinställningar kan definieras för alla användare eller på individuell användarnivå.
AllUsers-konfiguration (delad)
En powershell.config.json
fil i $PSHOME
katalogen definierar konfigurationen för alla PowerShell-sessioner som körs från den PowerShell-installationen.
Kommentar
Platsen $PSHOME
definieras som samma katalog som den kör System.Management.Automation.dll sammansättningen. Detta gäller även värdbaserade PowerShell SDK-instanser.
CurrentUser-konfigurationer (per användare)
Du kan också konfigurera PowerShell per användare genom att placera filen i konfigurationskatalogen för användaromfattning. Användarkonfigurationskatalogen finns på flera plattformar med kommandot Split-Path $PROFILE.CurrentUserCurrentHost
.
Omfångsprioret
I Windows har inställningar som hanteras av Windows grupprincip företräde framför inställningarna i konfigurationsfilen. grupprincip finns inte på plattformar som inte är Windows-plattformar.
När grupprincip har inställningar som definierats på Nivån Allaanvändare företräde framför inställningar som definierats för CurrentUser-nivån.
Windows-specifika inställningar
Följande inställningar gäller endast för Windows-plattformar.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
När inställningen är inställd true
på inaktiverar den här inställningen kompatibilitetsfunktionen i Windows PowerShell. Med Windows PowerShell-kompatibilitet kan PowerShell 7 läsa in Windows PowerShell 5.1-moduler i kompatibilitetsläge.
Mer information finns i about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityModuleDenyList
Den här inställningen är en matris med modulnamn som du vill undanta från deltagande i Windows PowerShell-kompatibilitetsfunktionen.
Mer information finns i about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityNoClobberModuleList
Den här inställningen är en matris med modulnamn som inte ska klonas genom att läsa in Windows PowerShell 5.1-versionen av modulen.
Mer information finns i about_Windows_PowerShell_Compatibility.
ExecutionPolicy
Viktigt!
Den här konfigurationen gäller endast på Windows-plattformar.
Konfigurerar körningsprincipen för PowerShell-sessioner och avgör vilka skript som kan köras. Som standard använder PowerShell den befintliga körningsprincipen.
För AllUsers-konfigurationer anger detta localmachine-körningsprincipen . För CurrentUser-konfigurationer anger detta körningsprincipen CurrentUser .
I följande exempel anges körningsprincipen för PowerShell till RemoteSigned
.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Mer information finns i about_Execution_Policies.
PowerShellPolicies
Windows har flera inställningar som kan hanteras av grupprincip. Vanligtvis lagras den inställningen i Windows-registret. Den här inställningen kan också definieras i powershell.config.json
filen.
PowerShellPolicies
är ett JSON-objekt som innehåller nyckel/värde-par för de olika principinställningarna. Dessa principinställningar kan också visas på rotnivån för JSON-filen utanför PowerShellPolicies
objektet. Den här inställningen kan innehålla följande undernycklar:
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Inställningen ScriptExecution
används för att ange PowerShell-körningsprincipen.
Detta har företräde framför den ExecutionPolicy
inställning som beskrivs ovan.
Exempel:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Beskrivningar av de andra principinställningarna finns i beskrivningarna i avsnittet Vanliga konfigurationsinställningar .
I Windows söker PowerShell efter inställningarna i registret. Alla inställningar som finns i registret har företräde. Nästa PowerShell läser JSON-konfigurationen. Alla inställningar som finns under PowerShellPolicies
och som inte har definierats i registret har företräde framför de inställningar som finns på rotnivån för JSON-konfigurationen.
Mer information finns i about_Group_Policy_Settings.
Inställningar för plattformar som inte är Windows-plattformar
Följande inställningar gäller endast för Linux- och macOS-plattformar.
Följande nycklar används för att konfigurera PowerShells loggning för Linux och macOS.
LogChannels
LogIdentity
LogKeywords
LogLevel
En fullständig beskrivning av PowerShell-loggning för icke-Windows-system finns i about_Logging_Non-Windows.
Vanliga konfigurationsinställningar
Följande inställningar är tillgängliga på alla plattformar som stöds.
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
ConsoleSessionConfiguration
Den här inställningen anger vilken sessionskonfiguration som ska användas för alla PowerShell-sessioner. Det kan vara vilken slutpunkt som helst som är registrerad på den lokala datorn, inklusive standardslutpunkterna för PowerShell-fjärrkommunikation eller en anpassad slutpunkt som har specifika funktioner för användarroller.
Den här nyckeln innehåller två undernycklar:
EnableConsoleSessionConfiguration
– om du vill aktivera sessionskonfigurationer anger du värdet tilltrue
. Som standard ärfalse
det här värdet .ConsoleSessionConfigurationName
– Anger namnet på konfigurationsslutpunkten där PowerShell körs. Som standard finns det ingen definierad session.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Mer information finns i about_Session_Configurations.
ExperimentalFeatures
Namnen på de experimentella funktioner som ska aktiveras i PowerShell. Standardvärdet är en tom matris.
I följande exempel aktiveras experimentella funktioner för PSCommandNotFoundSuggestion och PSSubsystemPluginModel när PowerShell startas.
Exempel:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Mer information om experimentella funktioner finns i Använda experimentella funktioner.
Modulloggning
Den här inställningen styr beteendet för loggning för PowerShell-moduler. Inställningen innehåller två undernycklar:
EnableModuleLogging
– om du vill aktivera modulloggning anger du värdet tilltrue
. När det är aktiverat registreras pipelinekörningshändelser för medlemmar i de angivna modulerna i PowerShell-loggfilerna.ModuleNames
– Anger namnet på de moduler som ska loggas.
Exempel:
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
Med den här inställningen kan du konfigurera loggning av skyddade händelser. Inställningen innehåller två undernycklar:
EnableProtectedEventLogging
– Om du aktiverar den här principinställningen använder komponenter som stöder den det certifikat som du anger för att kryptera loggdata innan de skrivs till loggen. Data krypteras med hjälp av cms-standarden (Cryptographic Message Syntax). Du kan användaUnprotect-CmsMessage
för att dekryptera dessa krypterade meddelanden om du har åtkomst till certifikatets privata nyckel.EncryptionCertificate
– Innehåller en lista över namn på certifikat som ska användas för kryptering.
Exempel:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Åsidosätter PSModulePath
inställningarna för den här PowerShell-sessionen. Om konfigurationen är för den aktuella användaren anger du modulsökvägen CurrentUser . Om konfigurationen är för alla användare anger du sökvägen till AllUsers-modulen .
Varning
Om du konfigurerar en AllUsers - eller CurrentUser-modulsökväg här ändras inte den begränsade installationsplatsen för PowerShellGet-cmdletar som Install-Module. Dessa cmdletar använder alltid standardmodulsökvägarna .
Om inget värde anges använder PowerShell standardvärdet för respektive inställning för modulsökväg. Mer information om dessa standardvärden finns i about_PSModulePath.
Med den här inställningen kan miljövariabler användas genom att bädda in dem mellan %
tecken, till exempel "%HOME%\Documents\PowerShell\Modules"
, på samma sätt som Windows Command Shell tillåter. Den här syntaxen gäller även för Linux och macOS. Se nedan för exempel.
Det här exemplet visar en PSModulePath
konfiguration för en Windows-miljö:
{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
Det här exemplet visar en PSModulePath
konfiguration för en macOS- eller Linux-miljö:
{
"PSModulePath": "/opt/powershell/6/Modules"
}
Det här exemplet visar inbäddning av en miljövariabel i en PSModulePath
konfiguration. Observera att med hjälp av HOME
miljövariabeln och /
katalogavgränsaren fungerar den här syntaxen i Windows, macOS och Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
I det här exemplet används en miljövariabel som bara fungerar på macOS och Linux:
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
Kommentar
PowerShell-variabler kan inte bäddas in i PSModulePath
konfigurationer.
PSModulePath
konfigurationer på Linux och macOS är skiftlägeskänsliga. En PSModulePath
konfiguration måste använda giltiga katalogavgränsare för plattformen. På macOS och Linux innebär /
detta . I Windows fungerar både /
och \
.
ScriptBlockLogging
Den här inställningen styr loggning av alla PowerShell-skriptindata. Den här inställningen innehåller två undernycklar:
EnableScriptBlockLogging
– Om du aktiverar den här principinställningen loggar PowerShell bearbetningen av kommandon, skriptblock, funktioner och skript oavsett om de anropas interaktivt eller via automatisering.EnableScriptBlockInvocationLogging
– aktiverar loggning av start- och stopphändelser för skriptblock.
Exempel:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Transkription
Med den här principinställningen kan du samla in in- och utdata från PowerShell-kommandon i textbaserade avskrifter. Om du aktiverar den här principinställningen aktiverar PowerShell transkription för alla PowerShell-sessioner.
Den här inställningen styr hur transkription fungerar i PowerShell. Den här inställningen innehåller tre undernycklar:
EnableTranscripting
– När den här inställningen är aktiverad skapar PowerShell transkriptionsloggfiler på den konfigurerade platsen.EnableInvocationHeader
– Som standard innehåller PowerShell en rubrik överst i transkriptionsloggfilen. Du kan inaktivera rubriken med den här inställningen.OutputDirectory
– Med den här inställningen kan du samla in transkriptionsloggfiler på en central plats i stället för standardplatsen.
Exempel:
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "c:\\tmp"
}
}
Mer information finns i Start-Transkription.
UpdatableHelp
Med den här principinställningen kan du ange standardvärdet för parametern SourcePath på cmdleten Update-Help
. Det här standardvärdet kan åsidosättas genom att ange ett annat värde med hjälp av parametern SourcePath .
Exempel:
{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}