about_PowerShell_Config
Kurze Beschreibung
Konfigurationsdateien für PowerShell, ersetzen die Registrierungskonfiguration.
Lange Beschreibung
Die powershell.config.json
Datei enthält Konfigurationseinstellungen für PowerShell. PowerShell lädt diese Konfiguration beim Start. Die Einstellungen können auch zur Laufzeit geändert werden. Zuvor wurden diese Einstellungen in der Windows-Registrierung für PowerShell gespeichert, sind aber jetzt in einer Datei enthalten, um die Konfiguration unter macOS und Linux zu aktivieren.
Zusammenfassung der Einstellungen
Die powershell.config.json
Datei 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
Nicht alle Schlüssel gelten für alle Plattformen. Der PowerShellPolicies
Schlüssel enthält Unterschlüssel, die die von der Windows-Gruppenrichtlinie verwalteten Einstellungen Spiegel. Diese Unterschlüssel gelten auch für alle Plattformen, wenn sie auf der Stammebene der JSON-Datei definiert sind.
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.
Konfigurationsumfang
Konfigurationseinstellungen können für alle Benutzer oder auf einzelner Benutzerebene definiert werden.
AllUsers -Konfiguration (freigegeben)
Eine powershell.config.json
Datei im $PSHOME
Verzeichnis definiert die Konfiguration für alle PowerShell-Sitzungen, die von dieser PowerShell-Installation ausgeführt werden.
Hinweis
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 Befehl Split-Path $PROFILE.CurrentUserCurrentHost
gefunden werden.
Bereichsrangfolge
Unter Windows haben einstellungen, die von der Windows-Gruppenrichtlinie verwaltet werden, Vorrang vor den Einstellungen in der Konfigurationsdatei. Gruppenrichtlinien sind auf Nicht-Windows-Plattformen nicht vorhanden.
Nach der Gruppenrichtlinie haben einstellungen, die auf der Ebene "AllUsers " definiert sind, Vorrang vor einstellungen, die für die CurrentUser-Ebene definiert sind.
Windows-spezifische Einstellungen
Die folgenden Einstellungen gelten nur für Windows-Plattformen.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
Wenn diese Einstellung auf Weitere Informationen finden Sie unter about_Windows_PowerShell_Compatibility. 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. 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. Wichtig Diese Konfiguration gilt nur auf Windows-Plattformen. 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. Bei 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 Weitere Informationen finden Sie unter Informationen zu Ausführungsrichtlinien. Windows verfügt über mehrere Einstellungen, die von gruppenrichtlinien verwaltet werden können. In der Regel werden diese Einstellungen in der Windows-Registrierung gespeichert. Diese Einstellung kann auch in der Dies Die Beispiel: Beschreibungen der anderen Richtlinieneinstellungen finden Sie in den Beschreibungen im Abschnitt "Allgemeine Konfigurationseinstellungen ". Unter Windows sucht PowerShell nach den Einstellungen in der Registrierung. Alle In der Registrierung gefundenen Einstellungen haben Vorrang. Als Nächstes liest PowerShell die JSON-Konfiguration vor. Alle Einstellungen, die unter Weitere Informationen finden Sie unter about_Group_Policy_Settings. Die folgenden Einstellungen gelten nur für Linux- und macOS-Plattformen. Die folgenden Schlüssel werden verwendet, um die Protokollierung von PowerShell für Linux und macOS zu konfigurieren. Eine vollständige Beschreibung der PowerShell-Protokollierung für Nicht-Windows-Systeme finden Sie unter about_Logging_Non-Windows. Die folgenden Einstellungen sind auf allen unterstützten Plattformen verfügbar. 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: Weitere Informationen finden Sie unter about_Session_Configurations. Die Namen der experimentellen Features, die in PowerShell aktiviert werden sollen. Der Standardwert ist ein leeres Array. Im folgenden Beispiel werden die experimentellen Features PSCommandNotFoundSuggestion und PSSubsystemPluginModel aktiviert, wenn PowerShell gestartet wird. Beispiel: Weitere Informationen zu experimentellen Features finden Sie unter Verwenden experimenteller Features. Diese Einstellung steuert das Verhalten der Protokollierung für PowerShell-Module. Die Einstellung enthält zwei Unterschlüssel: Beispiel: Mit dieser Einstellung können Sie die geschützte Ereignisprotokollierung konfigurieren. Die Einstellung enthält zwei Unterschlüssel: Beispiel: Überschreibt die Warnung Das Konfigurieren eines AllUsers- oder CurrentUser-Modulpfads ändert hier nicht den bereichsbezogenen Installationsspeicherort für PowerShellGet-Cmdlets wie "Install-Module". Diese Cmdlets verwenden immer die Standardmodulpfade . 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 Dieses Beispiel zeigt eine Dieses Beispiel zeigt eine Dieses Beispiel zeigt das Einbetten einer Umgebungsvariable in eine In diesem Beispiel wird eine Umgebungsvariable verwendet, die nur unter macOS und Linux funktioniert: Hinweis PowerShell-Variablen können nicht in Diese Einstellung steuert die Protokollierung aller PowerShell-Skripteingaben. Diese Einstellung enthält zwei Unterschlüssel: Beispiel: 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: Beispiel: Weitere Informationen finden Sie unter "Starttranskript". Mit dieser Richtlinieneinstellung können Sie den Standardwert des SourcePath-Parameters für das Beispiel:true
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
RemoteSigned
.{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
PowerShellPolicies
powershell.config.json
Datei definiert werden.PowerShellPolicies
ist ein JSON-Objekt, das Schlüsselwertpaare für die verschiedenen Richtlinieneinstellungen enthält. Diese Richtlinieneinstellungen können auch auf der Stammebene der JSON-Datei außerhalb des PowerShellPolicies
Objekts aufgeführt werden. Diese Einstellung kann die folgenden Unterschlüssel enthalten:
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
ScriptExecution
Einstellung wird verwendet, um die PowerShell-Ausführungsrichtlinie festzulegen.
Dies hat Vorrang vor der ExecutionPolicy
oben beschriebenen Einstellung.{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
PowerShellPolicies
und nicht in der Registrierung definiert wurden, haben Vorrang vor einstellungen, die auf der Stammebene der JSON-Konfiguration gefunden wurden.Einstellungen für Nicht-Windows-Plattformen
LogChannels
LogIdentity
LogKeywords
LogLevel
Allgemeine Konfigurationseinstellungen
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
ConsoleSessionConfiguration
EnableConsoleSessionConfiguration
- Um Sitzungskonfigurationen zu aktivieren, legen Sie den Wert auf true
. Standardmäßig ist dieser Wert auf false
festgelegt.ConsoleSessionConfigurationName
– Gibt den Namen des Konfigurationsendpunkts an, in dem PowerShell ausgeführt wird. Standardmäßig ist keine Sitzung definiert.{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
ExperimentalFeatures
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
ModuleLogging
EnableModuleLogging
- Um Sitzungskonfigurationen zu aktivieren, legen Sie den Wert auf true
. 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.{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
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
diese verschlüsselten Nachrichten 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.{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
PSModulePath
Einstellungen für diese PowerShell-Sitzung. Wenn die Konfiguration für den aktuellen Benutzer gilt, wird der CurrentUser-Modulpfad festgelegt. Wenn die Konfiguration für alle Benutzer gilt, wird der AllUsers-Modulpfad festgelegt.%
Zeichen wie "%HOME%\Documents\PowerShell\Modules"
der Windows-Befehlsshell eingebettet werden. Diese Syntax gilt auch für Linux und macOS. Weiter unten finden Sie Beispiele dafür.PSModulePath
Konfiguration für eine Windows-Umgebung:{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
PSModulePath
Konfiguration für eine macOS- oder Linux-Umgebung:{
"PSModulePath": "/opt/powershell/6/Modules"
}
PSModulePath
Konfiguration. Beachten Sie, dass diese Syntax mit der Umgebungsvariable HOME
und dem /
Verzeichnistrennzeichen unter Windows, macOS und Linux funktioniert.{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
PSModulePath
Konfigurationen eingebettet werden.
PSModulePath
Bei Konfigurationen unter Linux und macOS wird die Groß-/Kleinschreibung beachtet. Eine PSModulePath
Konfiguration muss gültige Verzeichnistrennzeichen für die Plattform verwenden. Unter macOS und Linux bedeutet /
dies . Unter Windows funktionieren beide /
und \
funktionieren.ScriptBlockLogging
EnableScriptBlockLogging
– Wenn Sie diese Richtlinieneinstellung aktivieren, protokolliert PowerShell die Verarbeitung von Befehlen, Skriptblöcken, Funktionen und Skripts, unabhängig davon, ob sie interaktiv oder durch Automatisierung aufgerufen werden.EnableScriptBlockInvocationLogging
– ermöglicht die Protokollierung von Start- und Stoppereignissen des Skriptblocks."ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Transkription
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.{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "c:\\tmp"
}
}
UpdatableHelp
Update-Help
Cmdlet festlegen. Dieser Standardwert kann überschrieben werden, indem ein anderer Wert mithilfe des SourcePath-Parameters angegeben wird.{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für