Om PowerShell-konfiguration
KORT BESKRIVNING
Konfigurationsfiler för PowerShell Core, som ersätter registerkonfiguration.
LÅNG BESKRIVNING
Filen powershell.config.json
innehåller konfigurationsinställningar för PowerShell Core. 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
powershell.config.json
Om filen innehåller ogiltig JSON PowerShell kan inte starta en interaktiv session.
Om detta inträffar måste du åtgärda konfigurationsfilen.
Anteckning
Okända nycklar eller ogiltiga värden i konfigurationsfilen ignoreras tyst.
Konfiguration av Allaanvändare (delad)
En powershell.config.json
fil i $PSHOME
katalogen definierar konfigurationen för alla PowerShell Core-sessioner som körs från den PowerShell Core-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
.
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 localmachine-körningsprincipen . 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 LocalMachine
och ä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 Core ärMicrosoft.PowerShell
detta . I alla PowerShell-sessioner kan du identifiera den med$ShellId
.<execution-policy>
refererar till ett giltigt körningsprincipnamn.
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 en PSModulePath-komponent 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 AllUser-modulen.
Varning
Om du konfigurerar en AllUsers- eller CurrentUser-modulsökväg här ändras inte den begränsade installationsplatsen för PowerShellGet-moduler som Install-Module. Dessa cmdletar använder alltid standardmodulsökvägarna.
Om inget värde anges används standardvärdet för respektive modulsökvägskomponent. Mer information om dessa standardvärden finns i about_Modules .
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 CMD tillåter. Den här syntaxen gäller även för Linux och macOS. Se nedan för exempel.
"PSModulePath": "<ps-module-path>"
Plats:
<ps-module-path>
är den absoluta sökvägen till en modulkatalog. För alla användarkonfigurationer är det den delade modulkatalogen AllUsers. 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 med hjälp av HOME
miljövariabeln och /
katalogavgränsaren fungerar detta i Windows, macOS och Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
Det här exemplet visar inbäddning av en miljövariabel i en PSModulePath-konfiguration som bara 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. På 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.
Följande exempel aktiverar experimentella funktioner för PSImplicitRemoting och PSUseAbbreviationExpansion när PowerShell startas.
{
"ExperimentalFeatures": [
"PSImplicitRemotingBatching",
"PSUseAbbreviationExpansion"
]
}
Mer information om experimentella funktioner finns i PowerShell RFC 29.
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 den strängidentitet som PowerShell ska använda för att skriva till syslog.
Anteckning
Du kanske vill ha olika LogIdentity-värden för varje annan 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 logga 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
PSImplicitRemotingBatching
experimentella 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"
}