Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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. Alla nycklar gäller inte för alla plattformar.
Varning
Okända nycklar eller ogiltiga värden i konfigurationsfilen ignoreras. Om den powershell.config.json filen innehåller ogiltig JSON kan PowerShell inte starta en interaktiv session. Om detta inträffar måste du åtgärda konfigurationsfilen.
Sammanfattning av inställningar
Filen powershell.config.json kan innehålla följande nycklar:
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExperimentalFeaturesLogChannelsLogIdentityLogKeywordsLogLevelMicrosoft.PowerShell:ExecutionPolicyPSModulePathPowerShellPoliciesExecutionPolicyConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
Konfigurationsomfång
Konfigurationsinställningar kan definieras för alla användare eller på individuell användarnivå.
Omfångsprioret
Förutom några specialfall har inställningar som definierats på CurrentUser-nivån företräde framför inställningar som definierats för Nivån Allaanvändare .
På Windows system:
- Inställningar som hanteras av Windows grupprincip har företräde framför inställningarna i konfigurationsfilerna.
- Inställningar för körningsprincip stöder omfångsnivå.
På alla plattformar:
- Det resulterande värdet
$env:PSModulePathför är en sammanslagning av nyckelnsPSModulePathvärden från båda omfången.
AllUsers-konfiguration (delad)
En powershell.config.json fil i katalogen $PSHOME definierar konfigurationen för alla PowerShell-sessioner som körs från den PowerShell-installationen.
Not
Den $PSHOME platsen definieras som samma katalog som den kör System.Management.Automation.dll sammansättning. 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 följande kommando:
Split-Path $PROFILE.CurrentUserCurrentHost
Windows-specifika inställningar
Följande inställningar gäller endast för Windows-plattformar.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListMicrosoft.PowerShell:ExecutionPolicyPowerShellPoliciesScriptExecution
DisableImplicitWinCompat
När inställningen är inställd på trueinaktiverar den här inställningen Funktionen Windows PowerShell-kompatibilitet. 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.
Microsoft. PowerShell:ExecutionPolicy
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 körningsprincipen LocalMachine. 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.
Inställningar för plattformar som inte är Windows-plattformar
Följande inställningar gäller endast för Linux- och macOS-plattformar.
Använd följande nycklar för att konfigurera PowerShell-loggning för Linux och macOS.
LogChannelsLogIdentityLogKeywordsLogLevel
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.
ExperimentalFeaturesPSModulePathPowerShellPolicies
ExperimentalFeatures
Namnen på de experimentella funktioner som ska aktiveras i PowerShell. Standardvärdet är en tom matris.
I följande exempel kan PSCommandNotFoundSuggestion och PSSubsystemPluginModel experimentella funktioner när PowerShell startas.
Exempel:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Mer information om experimentella funktioner finns i Använda experimentella funktioner.
PSModulePath
Åsidosätter PSModulePath-inställningarna för den här PowerShell-sessionen. Om konfigurationen är för den aktuella användaren anger du sökvägen CurrentUser modul. Om konfigurationen är för alla användare anger du AllUsers modulsökväg.
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 standardsökvägar för modul.
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\\7\\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änsare 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"
}
Not
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 det /. I Windows fungerar både / och \.
PowerShellPolicies
PowerShellPolicies är ett JSON-objekt som innehåller nyckel/värde-par för de olika inställningarna. Förutom inställningen ScriptExecution kan alla inställningar användas på Windows-, Linux- och macOS-plattformar.
PowerShellPolicies innehåller följande undernycklar:
ConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
På Windows kan de här inställningarna hanteras av Windows grupprincip. Grupprincipinställningar har företräde. Om ett värde inte anges av grupprincip tillämpar PowerShell värdena i JSON-filen i omfångsprioritetens ordning.
Grupprincip är det rekommenderade sättet att hantera dessa inställningar på Windows system. Mer information finns i about_Group_Policy_Settings.
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 är det här värdetfalse.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.
Modulloggning
Den här inställningen styr beteendet för loggning för PowerShell-moduler. Inställningen innehåller två undernycklar:
-
EnableModuleLogging– för att 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-CmsMessageför att dekryptera dessa krypterade meddelanden om du har åtkomst till certifikatets privata nyckel. -
EncryptionCertificate– Innehåller en lista med namn på certifikat som ska användas för kryptering.
Exempel:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
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– möjliggör loggning av skriptblockera start- och stopphändelser.
Exempel:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
ScriptExecution
Inställningen ScriptExecution används för att ange PowerShell-körningsprincipen.
Detta har företräde framför den Microsoft.PowrShell:ExecutionPolicy inställning som beskrevs tidigare.
Exempel:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Not
Det här är en inställning med endast Windows.
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-Transcript.
UpdatableHelp
Med den här principinställningen kan du ange standardvärdet för parametern SourcePath på Update-Help-cmdleten. 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"
}
}