about_PowerShell_Config
Kort beskrivning
Konfigurationsfiler för PowerShell, som ersätter registerkonfigurationen.
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.
Varning
Okända nycklar eller ogiltiga värden i konfigurationsfilen ignoreras tyst. 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.
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.
Anteckning
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. Katalogen för användarkonfiguration finns på flera plattformar med kommandot Split-Path $PROFILE.CurrentUserCurrentHost.
Allmänna konfigurationsinställningar
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 körningsprincipen LocalMachine . För CurrentUser-konfigurationer anger detta körningsprincipen CurrentUser .
Anteckning
Cmdleten Set-ExecutionPolicy ändrar den här inställningen i AllUsers-konfigurationsfilen när den anropas med -Scope LocalMachineoch ändrar den här inställningen i konfigurationsfilen CurrentUser när den anropas med -Scope CurrentUser.
"<shell-id>:ExecutionPolicy": "<execution-policy>"
Plats:
<shell-id>refererar till ID:t för den aktuella PowerShell-värden. För normal PowerShell ärMicrosoft.PowerShelldetta . I valfri PowerShell-session kan du identifiera den med$ShellId.<execution-policy>refererar till ett giltigt namn på körningsprincipen.
I följande exempel anges körningsprincipen för PowerShell till RemoteSigned.
{
"Microsoft.PowerShell.ExecutionPolicy": "RemoteSigned"
}
I Windows finns motsvarande registernycklar i \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell under HKEY_LOCAL_MACHINE och HKEY_CURRENT_USER.
PSModulePath
Åsidosätter PSModulePath inställningarna för den här PowerShell-sessionen. Om konfigurationen gäller 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 anges använder PowerShell standardvärdet för respektive modulsökvägsinställning. Mer information om dessa standardvärden finns i about_Modules.
Med den här inställningen kan miljövariabler användas genom att de bäddas in mellan % tecken, till exempel "%HOME%\Documents\PowerShell\Modules", på samma sätt som CMD tillåter. Den här syntaxen gäller även för Linux och macOS. Exempel finns nedan.
"PSModulePath": "<ps-module-path>"
Plats:
<ps-module-path>är den absoluta sökvägen till en modulkatalog. För alla användarkonfigurationer är detta katalogen AllUsers shared module( Delad modul). För aktuella användarkonfigurationer är det här modulkatalogen CurrentUser.
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 om du använder HOME miljövariabeln och / katalogavgränsaren fungerar detta i Windows, macOS och Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
Det här exemplet visar hur du bäddar in en miljövariabel i en PSModulePath konfiguration som endast fungerar i macOS och Linux:
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
Anteckning
PowerShell-variabler kan inte bäddas in i PSModulePath konfigurationer.
PSModulePath -konfigurationer i Linux och macOS är skiftlägeskänsliga. En PSModulePath konfiguration måste använda giltiga katalogavgränsare för plattformen. I macOS och Linux innebär /detta . Både och \ fungerar i Windows/.
Experimentella funktioner
Namnen på de experimentella funktioner som ska aktiveras i PowerShell. Som standard är inga experimentella funktioner aktiverade. Standardvärdet är en tom matris.
"ExperimentalFeatures": ["<experimental-feature-name>", ...]
Plats:
<experimental-feature-name>är namnet på en experimentell funktion som ska aktiveras.
I följande exempel aktiveras experimentfunktionerna PSImplicitRemoting och PSUseAbbreviationExpansion när PowerShell startas.
{
"ExperimentalFeatures": [
"PSImplicitRemotingBatching",
"PSUseAbbreviationExpansion"
]
}
Mer information om experimentella funktioner finns i Använda experimentella funktioner.
Loggningskonfiguration som inte är windows
Viktigt
Konfigurationsalternativen i det här avsnittet gäller endast för macOS och Linux. Loggning för Windows hanteras av Windows Loggboken.
PowerShells loggning på macOS och Linux kan konfigureras i PowerShell-konfigurationsfilen. En fullständig beskrivning av PowerShell-loggning för icke-Windows-system finns i Om loggning.
LogIdentity
Viktigt
Den här inställningen kan bara användas i macOS och Linux.
Anger det identitetsnamn som används för att skriva till systemloggen. Standardvärdet är "powershell".
"LogIdentity": "<log-identity>"
Plats:
<log-identity>är strängidentiteten som PowerShell ska använda för att skriva till syslog.
Anteckning
Du kanske vill ha olika LogIdentity-värden för varje instans av PowerShell som du har installerat.
I det här exemplet konfigurerar vi LogIdentity för en förhandsversion av PowerShell.
{
"LogIdentity": "powershell-preview"
}
Loggnivå
Viktigt
Den här inställningen kan bara användas i macOS och Linux.
Anger den lägsta allvarlighetsgrad som PowerShell ska loggas på.
"LogLevel": "<log-level>|default"
Plats:
<log-level>är något av:- Alltid
- Kritiskt
- Fel
- Varning
- Information
- Verbose
- Felsöka
Anteckning
Om du anger en loggnivå aktiveras alla loggnivåer ovanför den.
Om du anger den här inställningen till standard tolkas det som standardvärdet. Standardvärdet är Informational.
I följande exempel anges värdet till Utförlig.
{
"LogLevel": "Verbose"
}
LogChannels
Viktigt
Den här inställningen kan bara användas i macOS och Linux.
Avgör vilka loggningskanaler som är aktiverade.
"LogChannels": "<log-channel>,..."
Plats:
<log-channel>är något av:- Drift – loggar grundläggande information om PowerShell-aktiviteter
- Analys – loggar mer detaljerad diagnostikinformation
Standardvärdet är Drift. Om du vill aktivera båda kanalerna inkluderar du båda värdena som en enda kommaavgränsad sträng. Exempel:
{
"LogChannels": "Operational,Analytic"
}
LogKeywords
Viktigt
Den här inställningen kan bara användas i macOS och Linux.
Avgör vilka delar av PowerShell som loggas. Som standard är alla loggnyckelord aktiverade. Om du vill aktivera flera nyckelord listar du värdena i en enda kommaavgränsad sträng.
"LogKeywords": "<log-keyword>,..."
Plats:
<log-keyword>är något av:- Runspace – hantering av runspace
- Pipeline – pipelineåtgärder
- Protokoll – hantering av kommunikationsprotokoll, till exempel PSRP
- Transport – stöd för transportlager, till exempel SSH
- Värd – PowerShell-värdfunktioner, till exempel konsolinteraktion
- Cmdletar – PowerShell-inbyggda cmdletar
- Serialiserare – serialiseringslogik
- Session – PowerShell-sessionstillstånd
- ManagedPlugin – WSMan-plugin-program
Anteckning
Det rekommenderas vanligtvis att lämna det här värdet oetett om du inte försöker diagnostisera ett specifikt beteende i en känd del av PowerShell. Om du ändrar det här värdet minskar bara mängden information som loggas.
I det här exemplet begränsas loggningen till körningsåtgärder, pipelinelogik och cmdlet-användning. All annan loggning utelämnas.
"LogKeywords": "Runspace,Pipeline,Cmdlets"
Fler exempelkonfigurationer
Exempel på Windows-konfiguration
Den här konfigurationen har fler inställningar uttryckligen inställda:
- Körningsprincipen för den här PowerShell-installationen är
AllSigned - Modulsökvägen CurrentUser är inställd på en modulkatalog på en delad enhet
- Den
PSImplicitRemotingBatchingexperimentella funktionen är aktiverad
Anteckning
ExecutionPolicy Inställningarna och PSModulePath här fungerar bara på en Windows-plattform, eftersom modulsökvägen använder \ och ; avgränsar tecken och körningsprincipen inte Unrestricted är det (den enda principen som tillåts på UNIX-liknande plattformar).
{
"Microsoft.PowerShell.ExecutionPolicy": "AllSigned",
"PSModulePath": "Z:\\Marisol's Shared Drive\\Modules",
"ExperimentalFeatures": ["PSImplicitRemotingBatching"],
}
Exempel på icke-Windows-konfiguration
Den här konfigurationen anger ett antal alternativ som bara fungerar i macOS eller Linux:
- Modulsökvägen CurrentUser är inställd på en anpassad modulkatalog i
$HOME - Den experimentella funktionen PSImplicitRemotingBatching är aktiverad
- PowerShell-loggningsnivån är inställd på Utförlig för mer loggning
- Den här PowerShell-installationen skriver till loggarna med hjälp av hem-powershell-identiteten .
{
"PSModulePath": "%HOME%/.powershell/Modules",
"ExperimentalFeatures": ["PSImplicitRemotingBatching"],
"LogLevel": "Verbose",
"LogIdentity": "home-powershell"
}