Dela via


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 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 Core är Microsoft.PowerShelldetta . 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"
}

Se även

Om körningsprinciper

Om automatiska variabler