about_PowerShell_Config

Korte beschrijving

Configuratiebestanden voor PowerShell, waarbij registerconfiguratie wordt vervangen.

Lange beschrijving

Het powershell.config.json bestand bevat configuratie-instellingen voor PowerShell. PowerShell laadt deze configuratie bij het opstarten. De instellingen kunnen ook tijdens runtime worden gewijzigd. Voorheen werden deze instellingen opgeslagen in het Windows-register voor PowerShell, maar zijn nu opgenomen in een bestand om configuratie in te schakelen in macOS en Linux.

Waarschuwing

Niet-herkende sleutels of ongeldige waarden in het configuratiebestand worden op de achtergrond genegeerd. Als het powershell.config.json bestand ongeldige JSON bevat, kan PowerShell geen interactieve sessie starten. Als dit gebeurt, moet u het configuratiebestand herstellen.

Configuratie van AllUsers (gedeeld)

Een powershell.config.json bestand in de $PSHOME map definieert de configuratie voor alle PowerShell-sessies die worden uitgevoerd vanaf die PowerShell-installatie.

Notitie

De $PSHOME locatie wordt gedefinieerd als dezelfde map als de uit te voeren System.Management.Automation.dll assembly. Dit geldt ook voor gehoste PowerShell SDK-exemplaren.

CurrentUser-configuraties (per gebruiker)

U kunt PowerShell ook per gebruiker configureren door het bestand in de configuratiemap van het gebruikersbereik te plaatsen. De gebruikersconfiguratiemap vindt u op verschillende platforms met de opdracht Split-Path $PROFILE.CurrentUserCurrentHost.

Algemene configuratie-instellingen

ExecutionPolicy

Belangrijk

Deze configuratie is alleen van toepassing op Windows-platforms.

Hiermee configureert u het uitvoeringsbeleid voor PowerShell-sessies, waarmee wordt bepaald welke scripts kunnen worden uitgevoerd. PowerShell maakt standaard gebruik van het bestaande uitvoeringsbeleid.

Voor AllUsers-configuraties wordt hiermee het uitvoeringsbeleid LocalMachine ingesteld. Voor CurrentUser-configuraties wordt hiermee het CurrentUser-uitvoeringsbeleid ingesteld.

Notitie

De Set-ExecutionPolicy cmdlet wijzigt deze instelling in het configuratiebestand AllUsers wanneer deze wordt aangeroepen met -Scope LocalMachineen wijzigt deze instelling in het CurrentUser-configuratiebestand wanneer deze wordt aangeroepen met -Scope CurrentUser.

"<shell-id>:ExecutionPolicy": "<execution-policy>"

Waar:

  • <shell-id> verwijst naar de id van de huidige PowerShell-host. Voor normale PowerShell is Microsoft.PowerShelldit . In elke PowerShell-sessie kunt u deze ontdekken met $ShellId.
  • <execution-policy> verwijst naar een geldige naam van het uitvoeringsbeleid.

In het volgende voorbeeld wordt het uitvoeringsbeleid van PowerShell ingesteld op RemoteSigned.

{
  "Microsoft.PowerShell.ExecutionPolicy": "RemoteSigned"
}

In Windows vindt u de equivalente registersleutels onder \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellHKEY_LOCAL_MACHINE en HKEY_CURRENT_USER.

PSModulePath

Overschrijft de PSModulePath instellingen voor deze PowerShell-sessie. Als de configuratie voor de huidige gebruiker is, stelt u het pad van de CurrentUser-module in. Als de configuratie voor alle gebruikers is, stelt u het modulepad AllUsers in.

Waarschuwing

Als u hier een Pad naar allUsers of CurrentUser-modules configureert, wordt de locatie van de installatie in het bereik voor PowerShellGet-cmdlets, zoals Install-Module, niet gewijzigd. Deze cmdlets gebruiken altijd de standaardmodulepaden .

Als er geen waarde is ingesteld, gebruikt PowerShell de standaardwaarde voor de respectieve instelling voor het modulepad. Zie about_Modules voor meer informatie over deze standaardinstellingen.

Met deze instelling kunnen omgevingsvariabelen worden gebruikt door ze tussen % tekens in te sluiten, zoals , op "%HOME%\Documents\PowerShell\Modules"dezelfde manier als CMD toestaat. Deze syntaxis is ook van toepassing op Linux en macOS. Zie hieronder voor voorbeelden.

"PSModulePath": "<ps-module-path>"

Waar:

  • <ps-module-path> is het absolute pad naar een modulemap. Voor alle gebruikersconfiguraties is dit de map met gedeelde AllUsers-modules. Voor huidige gebruikersconfiguraties is dit de map currentUser-module.

In dit voorbeeld ziet u een PSModulePath configuratie voor een Windows-omgeving:

{
  "PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}

In dit voorbeeld ziet u een PSModulePath configuratie voor een macOS- of Linux-omgeving:

{
  "PSModulePath": "/opt/powershell/6/Modules"
}

In dit voorbeeld ziet u hoe u een omgevingsvariabele insluit in een PSModulePath configuratie. Houd er rekening mee dat dit werkt met behulp van de HOME omgevingsvariabele en het / mapscheidingsteken in Windows, macOS en Linux.

{
  "PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}

In dit voorbeeld ziet u hoe u een omgevingsvariabele insluit in een PSModulePath configuratie die alleen werkt op macOS en Linux:

{
  "PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}

Notitie

PowerShell-variabelen kunnen niet worden ingesloten in PSModulePath configuraties. PSModulePath configuraties in Linux en macOS zijn hoofdlettergevoelig. Een PSModulePath configuratie moet geldige directoryscheidingstekens gebruiken voor het platform. In macOS en Linux betekent /dit. In Windows werken beide / en \ werken ze.

ExperimentalFeatures

De namen van de experimentele functies die u wilt inschakelen in PowerShell. Standaard zijn er geen experimentele functies ingeschakeld. De standaardwaarde is een lege matrix.

"ExperimentalFeatures": ["<experimental-feature-name>", ...]

Waar:

  • <experimental-feature-name> is de naam van een experimentele functie die moet worden ingeschakeld.

In het volgende voorbeeld worden de experimentele functies PSImplicitRemoting en PSUseAbbreviationExpansion ingeschakeld wanneer PowerShell wordt gestart.

{
  "ExperimentalFeatures": [
    "PSImplicitRemotingBatching",
    "PSUseAbbreviationExpansion"
  ]
}

Zie Experimentele functies gebruiken voor meer informatie over experimentele functies.

Configuratie van niet-Windows-logboekregistratie

Belangrijk

De configuratieopties in deze sectie zijn alleen van toepassing op macOS en Linux. Logboekregistratie voor Windows wordt beheerd door de Windows-Logboeken.

Logboekregistratie van PowerShell in macOS en Linux kan worden geconfigureerd in het PowerShell-configuratiebestand. Zie Over logboekregistratie voor niet-Windows-systemen voor een volledige beschrijving van PowerShell-logboekregistratie.

LogIdentity

Belangrijk

Deze instelling kan alleen worden gebruikt in macOS en Linux.

Hiermee stelt u de identiteitsnaam in die wordt gebruikt om naar het systeemlogboek te schrijven. De standaardwaarde is 'powershell'.

"LogIdentity": "<log-identity>"

Waar:

  • <log-identity> is de tekenreeksidentiteit die PowerShell moet gebruiken voor het schrijven naar syslog.

Notitie

Mogelijk wilt u verschillende LogIdentity-waarden hebben voor elk ander exemplaar van PowerShell dat u hebt geïnstalleerd.

In dit voorbeeld configureren we de LogIdentity voor een preview-versie van PowerShell.

{
  "LogIdentity": "powershell-preview"
}

Logniveau

Belangrijk

Deze instelling kan alleen worden gebruikt in macOS en Linux.

Hiermee geeft u het minimale ernstniveau op waarop PowerShell moet worden vastgelegd.

"LogLevel": "<log-level>|default"

Waar:

  • <log-level> heeft een van de volgende waarden:
    • Altijd
    • Kritiek
    • Fout
    • Waarschuwing
    • Informatief
    • Uitgebreid
    • Fouten opsporen

Notitie

Als u een logboekniveau instelt, worden alle logboekniveaus erboven ingeschakeld.

Als u deze instelling instelt op de standaardwaarde , wordt deze geïnterpreteerd als de standaardwaarde. De standaardwaarde is Informatief.

In het volgende voorbeeld wordt de waarde ingesteld op Uitgebreid.

{
  "LogLevel": "Verbose"
}

LogChannels

Belangrijk

Deze instelling kan alleen worden gebruikt in macOS en Linux.

Bepaalt welke logboekregistratiekanalen zijn ingeschakeld.

"LogChannels": "<log-channel>,..."

Waar:

  • <log-channel> heeft een van de volgende waarden:
    • Operationeel - registreert basisinformatie over PowerShell-activiteiten
    • Analyse- logboeken meer gedetailleerde diagnostische informatie

De standaardwaarde is Operationeel. Als u beide kanalen wilt inschakelen, moet u beide waarden opnemen als één door komma's gescheiden tekenreeks. Bijvoorbeeld:

{
  "LogChannels": "Operational,Analytic"
}

LogKeywords

Belangrijk

Deze instelling kan alleen worden gebruikt in macOS en Linux.

Bepaalt welke onderdelen van PowerShell worden vastgelegd. Standaard zijn alle trefwoorden voor logboeken ingeschakeld. Als u meerdere trefwoorden wilt inschakelen, geeft u de waarden weer in één door komma's gescheiden tekenreeks.

"LogKeywords": "<log-keyword>,..."

Waar:

  • <log-keyword> heeft een van de volgende waarden:
    • Runspace - runspace-beheer
    • Pijplijn - pijplijnbewerkingen
    • Protocol - communicatieprotocolverwerking, zoals PSRP
    • Transport - ondersteuning voor transportlagen, zoals SSH
    • Host - PowerShell-hostfunctionaliteit, bijvoorbeeld consoleinteractie
    • Cmdlets - ingebouwde PowerShell-cmdlets
    • Serializer - serialisatielogica
    • Sessie - PowerShell-sessiestatus
    • ManagedPlugin - WSMan-invoegtoepassing

Notitie

Het wordt over het algemeen aangeraden deze waarde niet in te stellen, tenzij u een specifiek gedrag in een bekend deel van PowerShell probeert te diagnosticeren. Als u deze waarde wijzigt, wordt alleen de hoeveelheid gegevens verlaagd die is geregistreerd.

In dit voorbeeld wordt de logboekregistratie beperkt tot runspace-bewerkingen, pijplijnlogica en gebruik van cmdlets. Alle andere logboekregistraties worden weggelaten.

"LogKeywords": "Runspace,Pipeline,Cmdlets"

Meer voorbeeldconfiguraties

Voorbeeld van Windows-configuratie

Deze configuratie heeft meer instellingen die expliciet zijn ingesteld:

  • Uitvoeringsbeleid voor deze PowerShell-installatie is AllSigned
  • Het pad van de CurrentUser-module is ingesteld op een modulemap op een gedeeld station
  • De PSImplicitRemotingBatching experimentele functie is ingeschakeld

Notitie

De ExecutionPolicy instellingen PSModulePath hier werken alleen op een Windows-platform, omdat het modulepad tekens gebruikt \ en ; scheidingstekens gebruikt en het uitvoeringsbeleid niet Unrestricted is (het enige beleid dat is toegestaan op UNIX-achtige platforms).

{
  "Microsoft.PowerShell.ExecutionPolicy": "AllSigned",
  "PSModulePath": "Z:\\Marisol's Shared Drive\\Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
}

Voorbeeld van niet-Windows-configuratie

Met deze configuratie stelt u een aantal opties in die alleen werken in macOS of Linux:

  • Het pad van de CurrentUser-module is ingesteld op een aangepaste modulemap in $HOME
  • De experimentele functie PSImplicitRemotingBatching is ingeschakeld
  • Het PowerShell-logboekregistratieniveau is ingesteld op Uitgebreid, voor meer logboekregistratie
  • Deze PowerShell-installatie schrijft naar de logboeken met behulp van de home-powershell-identiteit .
{
  "PSModulePath": "%HOME%/.powershell/Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
  "LogLevel": "Verbose",
  "LogIdentity": "home-powershell"
}

Zie ook