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 macOS en Linux in te schakelen.
Overzicht van instellingen
Het powershell.config.json
bestand kan de volgende sleutels bevatten:
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExperimentalFeatures
LogChannels
LogIdentity
LogKeywords
LogLevel
Microsoft.PowerShell:ExecutionPolicy
PSModulePath
PowerShellPolicies
ExecutionPolicy
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Niet alle sleutels zijn van toepassing op alle platforms. De PowerShellPolicies
sleutel bevat subsleutels die de instellingen weerspiegelen die worden beheerd door groepsbeleid voor vensters. Deze subsleutels zijn ook van toepassing op alle platforms wanneer deze zijn gedefinieerd op het hoofdniveau van het JSON-bestand.
Waarschuwing
Niet-herkende sleutels of ongeldige waarden in het configuratiebestand worden genegeerd. Als het powershell.config.json
bestand ongeldige JSON bevat, kan PowerShell geen interactieve sessie starten. Als dit het geval is, moet u het configuratiebestand herstellen.
Configuratiebereik
Configuratie-instellingen kunnen worden gedefinieerd voor alle gebruikers of op individueel gebruikersniveau.
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 uitgevoerde 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
.
Prioriteit van bereik
In Windows hebben instellingen die worden beheerd door Windows-groepsbeleid voorrang op instellingen in het configuratiebestand. Groepsbeleid bestaat niet op niet-Windows-platforms.
Na groepsbeleid hebben instellingen die zijn gedefinieerd op het niveau AllUsers voorrang op instellingen die zijn gedefinieerd voor het CurrentUser-niveau .
Windows-specifieke instellingen
De volgende instellingen zijn alleen van toepassing op Windows-platforms.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
Als deze instelling is ingesteld true
, wordt de windows PowerShell-compatibiliteitsfunctie uitgeschakeld. Met Compatibiliteit met Windows PowerShell kan PowerShell 7 Windows PowerShell 5.1-modules laden in de compatibiliteitsmodus.
Zie about_Windows_PowerShell_Compatibility voor meer informatie.
WindowsPowerShellCompatibilityModuleDenyList
Deze instelling is een matrix met modulenamen die u wilt uitsluiten van deelname aan de windows PowerShell-compatibiliteitsfunctie.
Zie about_Windows_PowerShell_Compatibility voor meer informatie.
WindowsPowerShellCompatibilityNoClobberModuleList
Deze instelling is een matrix met modulenamen die niet mogen worden clobbered door de Windows PowerShell 5.1-versie van de module te laden.
Zie about_Windows_PowerShell_Compatibility voor meer informatie.
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 localMachine-uitvoeringsbeleid ingesteld. Voor CurrentUser-configuraties wordt hiermee het CurrentUser-uitvoeringsbeleid ingesteld.
In het volgende voorbeeld wordt het uitvoeringsbeleid van PowerShell ingesteld op RemoteSigned
.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Raadpleeg about_Execution_Policies voor meer informatie.
PowerShellPolicies
Windows heeft verschillende instellingen die kunnen worden beheerd door Groepsbeleid. Deze instelling wordt meestal opgeslagen in het Windows-register. Deze instelling kan ook worden gedefinieerd in het powershell.config.json
bestand.
Het PowerShellPolicies
is een JSON-object dat sleutel-waardeparen bevat voor de verschillende beleidsinstellingen. Deze beleidsinstellingen kunnen ook worden vermeld op het hoofdniveau van het JSON-bestand, buiten het PowerShellPolicies
object. Deze instelling kan de volgende subsleutels bevatten:
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
De ScriptExecution
instelling wordt gebruikt om het PowerShell-uitvoeringsbeleid in te stellen.
Dit heeft voorrang op de ExecutionPolicy
hierboven beschreven instelling.
Voorbeeld:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Zie de beschrijvingen in de sectie Algemene configuratie-instellingen voor beschrijvingen van de andere beleidsinstellingen .
In Windows zoekt PowerShell naar de instellingen in het register. Alle instellingen in het register hebben voorrang. Vervolgens leest PowerShell de JSON-configuratie. Alle instellingen die worden gevonden onder PowerShellPolicies
en niet zijn gedefinieerd in het register, hebben voorrang op instellingen die zijn gevonden op het hoofdniveau van de JSON-configuratie.
Zie about_Group_Policy_Settings voor meer informatie.
Instellingen voor niet-Windows-platforms
De volgende instellingen zijn alleen van toepassing op Linux- en macOS-platforms.
De volgende sleutels worden gebruikt om de logboekregistratie van PowerShell voor Linux en macOS te configureren.
LogChannels
LogIdentity
LogKeywords
LogLevel
Algemene configuratie-instellingen
De volgende instellingen zijn beschikbaar op alle ondersteunde platforms.
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
ConsoleSessionConfiguration
Met deze instelling geeft u de sessieconfiguratie op die moet worden gebruikt voor alle PowerShell-sessies. Dit kan elk eindpunt zijn dat is geregistreerd op de lokale computer, inclusief de standaardeindpunten voor externe communicatie van PowerShell of een aangepast eindpunt met specifieke mogelijkheden voor gebruikersrollen.
Deze sleutel bevat twee subsleutels:
EnableConsoleSessionConfiguration
- als u sessieconfiguraties wilt inschakelen, stelt u de waarde in optrue
. Deze waarde isfalse
standaard.ConsoleSessionConfigurationName
- Hiermee geeft u de naam van het configuratie-eindpunt waarin PowerShell wordt uitgevoerd. Er is standaard geen sessie gedefinieerd.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Zie about_Session_Configurations voor meer informatie.
ExperimentalFeatures
De namen van de experimentele functies die moeten worden ingeschakeld in PowerShell. De standaardwaarde is een lege matrix.
In het volgende voorbeeld worden de experimentele functies psCommandNotFoundSuggestion en PSSubsystemPluginModel ingeschakeld wanneer PowerShell wordt gestart.
Voorbeeld:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Zie Experimentele functies gebruiken voor meer informatie over experimentele functies.
ModuleLogging
Deze instelling bepaalt het gedrag van logboekregistratie voor PowerShell-modules. De instelling bevat twee subsleutels:
EnableModuleLogging
- als u sessieconfiguraties wilt inschakelen, stelt u de waarde in optrue
. Wanneer deze functie is ingeschakeld, worden pijplijnuitvoeringsevenementen vastgelegd voor leden van de opgegeven modules in de PowerShell-logboekbestanden.ModuleNames
- Hiermee geeft u de naam van de modules die moeten worden geregistreerd.
Voorbeeld:
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
Met deze instelling kunt u beveiligde gebeurtenislogboekregistratie configureren. De instelling bevat twee subsleutels:
EnableProtectedEventLogging
- Als u deze beleidsinstelling inschakelt, gebruiken onderdelen die dit ondersteunen het certificaat dat u opgeeft om logboekgegevens te versleutelen voordat u deze naar het logboek schrijft. Gegevens worden versleuteld met behulp van de standaard cryptografische berichtsyntaxis (CMS). U kuntUnprotect-CmsMessage
deze versleutelde berichten ontsleutelen als u toegang hebt tot de persoonlijke sleutel van het certificaat.EncryptionCertificate
- Biedt een lijst met de naam van certificaten die moeten worden gebruikt voor versleuteling.
Voorbeeld:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Hiermee overschrijft u 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 pad van de module AllUsers in.
Waarschuwing
Als u een AllUsers - of CurrentUser-modulepad 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 modulepadinstelling. Zie about_PSModulePath voor meer informatie over deze standaardinstellingen.
Met deze instelling kunnen omgevingsvariabelen worden gebruikt door ze tussen %
tekens in te sluiten, zoals "%HOME%\Documents\PowerShell\Modules"
op dezelfde manier als de Windows Command Shell toestaat. Deze syntaxis is ook van toepassing op Linux en macOS. Zie hieronder voor voorbeelden.
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 deze syntaxis werkt met behulp van de HOME
omgevingsvariabele en het /
mapscheidingsteken in Windows, macOS en Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
In dit voorbeeld wordt een omgevingsvariabele gebruikt die alleen werkt in 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 adreslijstscheidingstekens voor het platform gebruiken. In macOS en Linux betekent /
dit. In Windows werken beide /
en \
werken.
ScriptBlockLogging
Met deze instelling bepaalt u de logboekregistratie van alle PowerShell-scriptinvoer. Deze instelling bevat twee subsleutels:
EnableScriptBlockLogging
- Als u deze beleidsinstelling inschakelt, registreert PowerShell de verwerking van opdrachten, scriptblokken, functies en scripts, ongeacht of deze interactief worden aangeroepen of via automatisering.EnableScriptBlockInvocationLogging
- maakt logboekregistratie van start- en stopgebeurtenissen van scriptblokken mogelijk.
Voorbeeld:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Transcriptie
Met deze beleidsinstelling kunt u de invoer en uitvoer van PowerShell-opdrachten vastleggen in transcripties op basis van tekst. Als u deze beleidsinstelling inschakelt, schakelt PowerShell transcriptie in voor alle PowerShell-sessies.
Met deze instelling bepaalt u hoe transcriptie werkt in PowerShell. Deze instelling bevat drie subsleutels:
EnableTranscripting
- Wanneer deze instelling is ingeschakeld, maakt PowerShell transcriptielogboekbestanden op de geconfigureerde locatie.EnableInvocationHeader
- PowerShell bevat standaard een koptekst boven aan het transcriptielogboekbestand. U kunt de koptekst uitschakelen met deze instelling.OutputDirectory
- Met deze instelling kunt u transcriptielogboekbestanden op een centrale locatie verzamelen in plaats van de standaardlocatie.
Voorbeeld:
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "c:\\tmp"
}
}
Zie Starttranscriptie voor meer informatie.
UpdatableHelp
Met deze beleidsinstelling kunt u de standaardwaarde van de parameter SourcePath instellen op de Update-Help
cmdlet. Deze standaardwaarde kan worden overschreven door een andere waarde op te geven met behulp van de parameter SourcePath .
Voorbeeld:
{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}