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 en grupprincip för fönster. 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. Grupprincipen finns inte på plattformar som inte är Windows-plattformar.

Efter 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 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 PowerShellPoliciesoch 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 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.

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 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 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ända Unprotect-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"
    }
}