about_PowerShell_Config

Kurzbeschreibung

Konfigurationsdateien für PowerShell, ersetzen die Registrierungskonfiguration.

Lange Beschreibung

Die datei powershell.config.json enthält Konfigurationseinstellungen für PowerShell. PowerShell lädt diese Konfiguration beim Start. Die Einstellungen können auch zur Laufzeit geändert werden. Nicht alle Schlüssel gelten für alle Plattformen.

Warnung

Unbekannte Schlüssel oder ungültige Werte in der Konfigurationsdatei werden ignoriert. Wenn die powershell.config.json-Datei ungültiges JSON enthält, kann PowerShell keine interaktive Sitzung starten. Wenn dies der Fall ist, müssen Sie die Konfigurationsdatei korrigieren.

Zusammenfassung der Einstellungen

Die datei powershell.config.json kann die folgenden Schlüssel enthalten:

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExperimentalFeatures
  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel
  • Microsoft.PowerShell:ExecutionPolicy
  • PSModulePath
  • PowerShellPolicies
    • ExecutionPolicy
    • ConsoleSessionConfiguration
    • ModuleLogging
    • ProtectedEventLogging
    • ScriptBlockLogging
    • ScriptExecution
    • Transcription
    • UpdatableHelp

Konfigurationsumfang

Konfigurationseinstellungen können für alle Benutzer oder auf einzelner Benutzerebene definiert werden.

Bereichsrangfolge

Mit Ausnahme einiger Sonderfälle haben einstellungen, die auf der CurrentUser-Ebene definiert sind, Vorrang vor den einstellungen, die für die AllUsers-Ebene definiert sind.

Auf Windows Systemen:

  • Von Windows Gruppenrichtlinie verwaltete Einstellungen haben Vorrang vor Einstellungen in den Konfigurationsdateien.
  • Einstellungen für die Ausführungsrichtlinie unterstützen Einstellungen auf Bereichsebene.

Auf allen Plattformen:

  • Der resultierende Wert ist $env:PSModulePath eine Zusammenführung der Werte des PSModulePath Schlüssels aus beiden Bereichen.

AllUsers -Konfiguration (freigegeben)

Eine powershell.config.json Datei im verzeichnis $PSHOME definiert die Konfiguration für alle PowerShell-Sitzungen, die von dieser PowerShell-Installation ausgeführt werden.

Anmerkung

Der $PSHOME Speicherort wird als dasselbe Verzeichnis wie die ausgeführte System.Management.Automation.dll Assembly definiert. Dies gilt auch für gehostete PowerShell SDK-Instanzen.

CurrentUser-Konfigurationen (pro Benutzer)

Sie können PowerShell auch pro Benutzer konfigurieren, indem Sie die Datei im Konfigurationsverzeichnis des Benutzerbereichs platzieren. Das Benutzerkonfigurationsverzeichnis kann plattformübergreifend mit dem folgenden Befehl gefunden werden:

Split-Path $PROFILE.CurrentUserCurrentHost

Windows-spezifische Einstellungen

Die folgenden Einstellungen gelten nur für Windows-Plattformen.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • Microsoft.PowerShell:ExecutionPolicy
  • PowerShellPolicies
    • ScriptExecution

DisableImplicitWinCompat

Wenn diese Einstellung auf truefestgelegt ist, deaktiviert diese Einstellung das Windows PowerShell-Kompatibilitätsfeature. Die Windows PowerShell-Kompatibilität ermöglicht PowerShell 7 das Laden von Windows PowerShell 5.1-Modulen im Kompatibilitätsmodus.

Weitere Informationen finden Sie unter about_Windows_PowerShell_Compatibility.

WindowsPowerShellCompatibilityModuleDenyList

Diese Einstellung ist ein Array von Modulnamen, die Sie von der Teilnahme am Windows PowerShell-Kompatibilitätsfeature ausschließen möchten.

Weitere Informationen finden Sie unter about_Windows_PowerShell_Compatibility.

WindowsPowerShellCompatibilityNoClobberModuleList

Diese Einstellung ist ein Array von Modulnamen, das nicht durch Laden der Windows PowerShell 5.1-Version des Moduls klobbert werden sollte.

Weitere Informationen finden Sie unter about_Windows_PowerShell_Compatibility.

Microsoft. PowerShell:ExecutionPolicy

Konfiguriert die Ausführungsrichtlinie für PowerShell-Sitzungen und bestimmt, welche Skripts ausgeführt werden können. Standardmäßig verwendet PowerShell die vorhandene Ausführungsrichtlinie.

Für AllUsers--Konfigurationen legt dies die LocalMachine Ausführungsrichtlinie fest. Für CurrentUser--Konfigurationen wird die CurrentUser- Ausführungsrichtlinie festgelegt.

Im folgenden Beispiel wird die Ausführungsrichtlinie von PowerShell auf RemoteSignedfestgelegt.

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

Weitere Informationen finden Sie unter about_Execution_Policies.

Einstellungen für Nicht-Windows-Plattformen

Die folgenden Einstellungen gelten nur für Linux- und macOS-Plattformen.

Verwenden Sie die folgenden Schlüssel, um die Protokollierung von PowerShell für Linux und macOS zu konfigurieren.

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

Eine vollständige Beschreibung der PowerShell-Protokollierung für Nicht-Windows-Systeme finden Sie unter about_Logging_Non-Windows.

Allgemeine Konfigurationseinstellungen

Die folgenden Einstellungen sind auf allen unterstützten Plattformen verfügbar.

  • ExperimentalFeatures
  • PSModulePath
  • PowerShellPolicies

ExperimentalFeatures

Die Namen der experimentellen Features, die in PowerShell aktiviert werden sollen. Der Standardwert ist ein leeres Array.

Im folgenden Beispiel wird die PSCommandNotFoundSuggestion und PSSubsystemPluginModel experimentelle Features aktiviert, wenn PowerShell gestartet wird.

Beispiel:

{
  "ExperimentalFeatures": [
    "PSCommandNotFoundSuggestion",
    "PSSubsystemPluginModel"
  ]
}

Weitere Informationen zu experimentellen Features finden Sie unter Verwenden experimenteller Features.

PSModulePath

Überschreibt die PSModulePath Einstellungen für diese PowerShell-Sitzung. Wenn die Konfiguration für den aktuellen Benutzer bestimmt ist, wird der CurrentUser Modulpfad festgelegt. Wenn die Konfiguration für alle Benutzer gilt, wird der AllUsers Modulpfad festgelegt.

Warnung

Das Konfigurieren eines AllUsers oder CurrentUser Modulpfad ändert hier nicht den Bereichsinstallationsort für PowerShellGet-Cmdlets wie Install-Module-. Diese Cmdlets verwenden immer die Standardmodulpfade Modulpfade.

Wenn kein Wert festgelegt ist, verwendet PowerShell den Standardwert für die jeweilige Modulpfadeinstellung. Weitere Informationen zu diesen Standardwerten finden Sie unter about_PSModulePath.

Mit dieser Einstellung können Umgebungsvariablen verwendet werden, indem sie zwischen % Zeichen wie "%HOME%\Documents\PowerShell\Modules"auf die gleiche Weise wie die Windows-Befehlsshell eingebettet werden. Diese Syntax gilt auch für Linux und macOS. Beispiele finden Sie unten.

Dieses Beispiel zeigt eine PSModulePath Konfiguration für eine Windows-Umgebung:

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

Dieses Beispiel zeigt eine PSModulePath Konfiguration für eine macOS- oder Linux-Umgebung:

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

Dieses Beispiel zeigt das Einbetten einer Umgebungsvariable in eine PSModulePath Konfiguration. Beachten Sie, dass diese Syntax unter Windows, macOS und Linux mithilfe der HOME Umgebungsvariablen und des / Verzeichnistrennzeichens funktioniert.

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

In diesem Beispiel wird eine Umgebungsvariable verwendet, die nur unter macOS und Linux funktioniert:

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

Anmerkung

PowerShell-Variablen können nicht in PSModulePath Konfigurationen eingebettet werden. PSModulePath Konfigurationen unter Linux und macOS wird zwischen Groß- und Kleinschreibung unterschieden. Eine PSModulePath-Konfiguration muss gültige Verzeichnistrennzeichen für die Plattform verwenden. Unter macOS und Linux bedeutet dies /. Unter Windows funktionieren sowohl / als auch \.

PowerShellPolicies

Dies PowerShellPolicies ist ein JSON-Objekt, das Schlüsselwertpaare für die verschiedenen Einstellungen enthält. Mit Ausnahme der ScriptExecution Einstellung können alle Einstellungen auf Windows-, Linux- und macOS-Plattformen verwendet werden.

PowerShellPolicies enthält die folgenden Unterschlüssel:

  • ConsoleSessionConfiguration
  • ModuleLogging
  • ProtectedEventLogging
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

Auf Windows können diese Einstellungen von Windows Gruppenrichtlinie verwaltet werden. Gruppenrichtlinieneinstellungen haben Vorrang. Wenn ein Wert nicht durch Eine Gruppenrichtlinie festgelegt wird, wendet PowerShell die Werte in der JSON-Datei in der Reihenfolge der Bereichsrangfolge an.

Gruppenrichtlinien sind die empfohlene Methode zum Verwalten dieser Einstellungen auf Windows Systemen. Weitere Informationen finden Sie unter about_Group_Policy_Settings.

ConsoleSessionConfiguration

Diese Einstellung gibt die Sitzungskonfiguration an, die für alle PowerShell-Sitzungen verwendet werden soll. Dies kann jeder auf dem lokalen Computer registrierte Endpunkt sein, einschließlich der standardmäßigen PowerShell-Remotingendpunkte oder eines benutzerdefinierten Endpunkts mit bestimmten Benutzerrollenfunktionen.

Dieser Schlüssel enthält zwei Unterschlüssel:

  • EnableConsoleSessionConfiguration – Um Sitzungskonfigurationen zu aktivieren, legen Sie den Wert auf truefest. Dieser Wert ist standardmäßig false.

  • ConsoleSessionConfigurationName – Gibt den Namen des Konfigurationsendpunkts an, in dem PowerShell ausgeführt wird. Standardmäßig ist keine Sitzung definiert.

{
  "ConsoleSessionConfiguration": {
    "EnableConsoleSessionConfiguration": false,
    "ConsoleSessionConfigurationName" : []
  }
}

Weitere Informationen finden Sie unter about_Session_Configurations.

ModuleLogging

Diese Einstellung steuert das Verhalten der Protokollierung für PowerShell-Module. Die Einstellung enthält zwei Unterschlüssel:

  • EnableModuleLogging – Um die Modulprotokollierung zu aktivieren, legen Sie den Wert auf truefest. Wenn diese Option aktiviert ist, werden Pipelineausführungsereignisse für Elemente der angegebenen Module in den PowerShell-Protokolldateien aufgezeichnet.
  • ModuleNames – Gibt den Namen der Module an, die protokolliert werden sollen.

Beispiel:

{
  "ModuleLogging": {
    "EnableModuleLogging": true,
    "ModuleNames" : [
        "PSReadLine",
        "PowerShellGet"
    ]
  }
}

ProtectedEventLogging

Mit dieser Einstellung können Sie die geschützte Ereignisprotokollierung konfigurieren. Die Einstellung enthält zwei Unterschlüssel:

  • EnableProtectedEventLogging – Wenn Sie diese Richtlinieneinstellung aktivieren, verwenden Komponenten, die es unterstützen, das zertifikat, das Sie zum Verschlüsseln von Protokolldaten bereitstellen, bevor Sie sie in das Protokoll schreiben. Daten werden mit dem CMS-Standard (Cryptographic Message Syntax) verschlüsselt. Sie können Unprotect-CmsMessage verwenden, um diese verschlüsselten Nachrichten zu entschlüsseln, wenn Sie Zugriff auf den privaten Schlüssel des Zertifikats haben.
  • EncryptionCertificate – Stellt eine Liste mit Namen von Zertifikaten bereit, die für die Verschlüsselung verwendet werden sollen.

Beispiel:

{
  "ProtectedEventLogging": {
    "EnableProtectedEventLogging": false,
    "EncryptionCertificate": [
      "Joe"
    ]
  }
}

ScriptBlockLogging

Diese Einstellung steuert die Protokollierung aller PowerShell-Skripteingaben. Diese Einstellung enthält zwei Unterschlüssel:

  • EnableScriptBlockLogging – Wenn Sie diese Richtlinieneinstellung aktivieren, protokolliert PowerShell die Verarbeitung von Befehlen, Skriptblocks, Funktionen und Skripts, unabhängig davon, ob sie interaktiv oder durch Automatisierung aufgerufen werden.
  • EnableScriptBlockInvocationLogging – ermöglicht die Protokollierung von Skriptblock-Start- und Stoppereignissen.

Beispiel:

"ScriptBlockLogging": {
  "EnableScriptBlockInvocationLogging": true,
  "EnableScriptBlockLogging": false
}

ScriptExecution

Die einstellung ScriptExecution wird verwendet, um die PowerShell-Ausführungsrichtlinie festzulegen. Dies hat Vorrang vor der Microsoft.PowrShell:ExecutionPolicy zuvor beschriebenen Einstellung.

Beispiel:

{
    "PowerShellPolicies": {
        "ScriptExecution": {
            "ExecutionPolicy": "RemoteSigned"
        }
    }
}

Anmerkung

Dies ist eine Windows-Only-Einstellung.

Transkription

Mit dieser Richtlinieneinstellung können Sie die Eingabe und Ausgabe von PowerShell-Befehlen in textbasierten Transkripten erfassen. Wenn Sie diese Richtlinieneinstellung aktivieren, aktiviert PowerShell die Transkription für alle PowerShell-Sitzungen.

Diese Einstellung steuert, wie die Transkription in PowerShell funktioniert. Diese Einstellung enthält drei Unterschlüssel:

  • EnableTranscripting – Wenn diese Einstellung aktiviert ist, erstellt PowerShell Transkriptionsprotokolldateien am konfigurierten Speicherort.
  • EnableInvocationHeader – Standardmäßig enthält PowerShell eine Kopfzeile oben in der Transkriptionsprotokolldatei. Sie können die Kopfzeile mithilfe dieser Einstellung deaktivieren.
  • OutputDirectory – Mit dieser Einstellung können Sie Transkriptionsprotokolldateien an einem zentralen Speicherort anstelle des Standardspeicherorts erfassen.

Beispiel:

{
    "Transcription": {
        "EnableTranscripting": true,
        "EnableInvocationHeader": true,
        "OutputDirectory": "C:\\tmp"
      }
}

Weitere Informationen finden Sie unter Starttranskript.

UpdatableHelp

Mit dieser Richtlinieneinstellung können Sie den Standardwert des SourcePath-Parameters für das Cmdlet Update-Help festlegen. Dieser Standardwert kann überschrieben werden, indem ein anderer Wert mithilfe des SourcePath--Parameters angegeben wird.

Beispiel:

{
    "UpdatableHelp": {
      "DefaultSourcePath": "F:\\temp"
    }
}