Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Configuratiebestanden voor PowerShell, waarbij registerconfiguratie wordt vervangen.
Lange beschrijving
Het bestand powershell.config.json 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 bestand powershell.config.json kan de volgende sleutels bevatten:
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExperimentalFeaturesLogChannelsLogIdentityLogKeywordsLogLevelMicrosoft.PowerShell:ExecutionPolicyPSModulePathPowerShellPoliciesExecutionPolicyConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
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 bestand powershell.config.json 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 map $PSHOME 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 System.Management.Automation.dll assembly die wordt uitgevoerd. 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.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExecutionPolicyPowerShellPolicies
DisableImplicitWinCompat
Als deze instelling is ingesteld op 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_Compatibilityvoor 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_Compatibilityvoor 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_Compatibilityvoor 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 het LocalMachine uitvoeringsbeleid ingesteld. Voor CurrentUser-configuraties stelt u het CurrentUser uitvoeringsbeleid in.
In het volgende voorbeeld wordt het uitvoeringsbeleid van PowerShell ingesteld op RemoteSigned.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Zie about_Execution_Policiesvoor 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 weergegeven op het hoofdniveau van het JSON-bestand, buiten het PowerShellPolicies-object. Deze instelling kan de volgende subsleutels bevatten:
ConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
De ScriptExecution-instelling wordt gebruikt om het PowerShell-uitvoeringsbeleid in te stellen.
Dit heeft voorrang op de ExecutionPolicy instelling die hierboven wordt beschreven.
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. Instellingen die zijn gevonden onder PowerShellPoliciesen niet zijn gedefinieerd in het register, hebben voorrang op instellingen die zijn gevonden op het hoofdniveau van de JSON-configuratie.
Zie about_Group_Policy_Settingsvoor 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.
LogChannelsLogIdentityLogKeywordsLogLevel
Zie about_Logging_Non-Windows-voor een volledige beschrijving van PowerShell-logboekregistratie voor niet-Windows-systemen.
Algemene configuratie-instellingen
De volgende instellingen zijn beschikbaar op alle ondersteunde platforms.
ConsoleSessionConfigurationExperimentalFeaturesModuleLoggingProtectedEventLoggingPSModulePathScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
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 is standaardfalse.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_Configurationsvoor 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 wordt de PSCommandNotFoundSuggestion en PSSubsystemPluginModel experimentele functies ingeschakeld wanneer PowerShell wordt gestart.
Voorbeeld:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Zie Experimentele functies gebruikenvoor meer informatie over experimentele functies.
ModuleLogging
Deze instelling bepaalt het gedrag van logboekregistratie voor PowerShell-modules. De instelling bevat twee subsleutels:
-
EnableModuleLogging: als u modulelogboekregistratie 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 op 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-CmsMessagegebruiken om deze versleutelde berichten te ontsleutelen als u toegang hebt tot de persoonlijke sleutel van het certificaat. -
EncryptionCertificate: bevat een lijst met certificaten die moeten worden gebruikt voor versleuteling.
Voorbeeld:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Overschrijft de PSModulePath-instellingen voor deze PowerShell-sessie. Als de configuratie voor de huidige gebruiker is, stelt u het CurrentUser modulepad in. Als de configuratie voor alle gebruikers is, stelt u het AllUsers modulepad in.
Waarschuwing
Als u een AllUsers- of CurrentUser modulepad configureert, wordt hier niet de locatie van de scoped-installatie voor PowerShellGet-cmdlets gewijzigd, zoals Install-Module-. Deze cmdlets gebruiken altijd de standaard- modulepaden.
Als er geen waarde is ingesteld, gebruikt PowerShell de standaardwaarde voor de respectieve modulepadinstelling. Zie about_PSModulePathvoor meer informatie over deze standaardinstellingen.
Met deze instelling kunnen omgevingsvariabelen worden gebruikt door ze in te sluiten tussen % tekens, 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 in Windows, macOS en Linux met behulp van de omgevingsvariabele HOME en het / directoryscheidingsteken.
{
"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. Op macOS en Linux betekent dit /. In Windows werken zowel / als \.
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, scriptblokkeringen, functies en scripts, ongeacht of deze interactief worden aangeroepen of via automatisering. -
EnableScriptBlockInvocationLogging- maakt logboekregistratie van start- en stopgebeurtenissen van scriptblokkering 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 starttranscriptievoor 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"
}
}