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

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExperimentalFeatures
  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel
  • Microsoft.PowerShell:ExecutionPolicy
  • PSModulePath
  • PowerShellPolicies
    • ExecutionPolicy
    • ConsoleSessionConfiguration
    • ModuleLogging
    • ProtectedEventLogging
    • ScriptBlockLogging
    • ScriptExecution
    • Transcription
    • UpdatableHelp

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:PSModulePath för är en sammanslagning av nyckelns PSModulePath vä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.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • Microsoft.PowerShell:ExecutionPolicy
  • PowerShellPolicies
    • ScriptExecution

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.

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

  • ExperimentalFeatures
  • PSModulePath
  • PowerShellPolicies

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:

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

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 till true. Som standard är det här värdet false.

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