Dela via


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å enskild användarnivå.

Konfiguration av Allaanvändare (delad)

En powershell.config.json fil i $PSHOME katalogen definierar konfigurationen för alla PowerShell-sessioner som körs från den PowerShell-installationen.

Anteckning

Platsen $PSHOME definieras som samma katalog som den körande 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ångsprioritet

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 truepå inaktiverar den här inställningen Windows PowerShell kompatibilitetsfunktionen. Windows PowerShell kompatibilitet gör att PowerShell 7 kan 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 funktionen Windows PowerShell kompatibilitet.

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 här 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å JSON-filens rotnivå 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 inställningen ExecutionPolicy som beskrivs ovan.

Exempel:

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

Beskrivningar av de andra principinställningarna finns i beskrivningarna i avsnittet Vanliga konfigurationsinställningar .

I Windows letar 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 definierats i registret, har företräde framför 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 kommer från Windows

Följande inställningar gäller endast för Linux- och macOS-plattformar.

Följande nycklar används för att konfigurera PowerShell-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. Detta 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ändarrollen.

Den här nyckeln innehåller två undernycklar:

  • EnableConsoleSessionConfiguration – om du vill aktivera sessionskonfigurationer anger du värdet till true. Som standard är falsedet 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.

Experimentella funktioner

Namnen på de experimentella funktioner som ska aktiveras i PowerShell. Standardvärdet är en tom matris.

Följande exempel aktiverar 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 loggningsbeteendet för PowerShell-moduler. Inställningen innehåller två undernycklar:

  • EnableModuleLogging – om du vill aktivera sessionskonfigurationer anger du värdet till true. 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 skyddad händelseloggning. 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ända Unprotect-CmsMessage fö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"
    ]
  }
}

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 modulsökvägen AllUsers .

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 har angetts använder PowerShell standardvärdet för respektive modulsökvägsinställning. Mer information om dessa standardvärden finns i about_PSModulePath.

Den här inställningen gör att miljövariabler kan användas genom att bädda in dem mellan % tecken, till exempel "%HOME%\Documents\PowerShell\Modules", på samma sätt som Windows-kommandogränssnittet 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"
}

Anteckning

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 transkriptioner. 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 ett huvud ö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 SourcePath-parametern 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"
    }
}