Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Krótki opis
Pliki konfiguracji programu PowerShell, zastępując konfigurację rejestru.
Długi opis
Plik powershell.config.json zawiera ustawienia konfiguracji programu PowerShell. Program PowerShell ładuje tę konfigurację podczas uruchamiania. Ustawienia można również modyfikować w czasie wykonywania. Wcześniej te ustawienia były przechowywane w rejestrze systemu Windows dla programu PowerShell, ale są teraz zawarte w pliku w celu włączenia konfiguracji w systemach macOS i Linux.
Podsumowanie ustawień
Plik powershell.config.json może zawierać następujące klucze:
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExperimentalFeaturesLogChannelsLogIdentityLogKeywordsLogLevelMicrosoft.PowerShell:ExecutionPolicyPSModulePathPowerShellPoliciesExecutionPolicyConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
Nie wszystkie klucze mają zastosowanie do wszystkich platform. Klucz PowerShellPolicies zawiera podklucze, które odzwierciedlają ustawienia zarządzane przez zasady grupy okien. Te podklucze mają również zastosowanie do wszystkich platform po zdefiniowaniu na poziomie głównym pliku JSON.
Ostrzeżenie
Nierozpoznane klucze lub nieprawidłowe wartości w pliku konfiguracji są ignorowane. Jeśli plik powershell.config.json zawiera nieprawidłowy kod JSON, program PowerShell nie może uruchomić sesji interakcyjnej. W takim przypadku należy naprawić plik konfiguracji.
Zakres konfiguracji
Ustawienia konfiguracji można zdefiniować dla wszystkich użytkowników lub na poziomie poszczególnych użytkowników.
Konfiguracja wszyscyużytkownicy (współdzielona)
Plik powershell.config.json w katalogu $PSHOME definiuje konfigurację dla wszystkich sesji programu PowerShell uruchomionych z tej instalacji programu PowerShell.
Nuta
Lokalizacja $PSHOME jest zdefiniowana jako ten sam katalog, w jakim jest wykonywany zestaw System.Management.Automation.dll. Dotyczy to również hostowanych wystąpień zestawu PowerShell SDK.
Konfiguracje currentUser (na użytkownika)
Program PowerShell można również skonfigurować dla poszczególnych użytkowników, umieszczając plik w katalogu konfiguracji zakresu użytkownika. Katalog konfiguracji użytkownika można znaleźć na różnych platformach za pomocą polecenia Split-Path $PROFILE.CurrentUserCurrentHost.
Pierwszeństwo zakresu
W systemie Windows ustawienia zarządzane przez zasady grupy systemu Windows mają pierwszeństwo przed ustawieniami w pliku konfiguracji. Zasady grupy nie istnieją na platformach innych niż Windows.
Po ustawieniu zasad grupy ustawienia zdefiniowane na poziomie AllUsers mają pierwszeństwo przed ustawieniami zdefiniowanymi dla poziomu CurrentUser.
Ustawienia specyficzne dla systemu Windows
Następujące ustawienia dotyczą tylko platform systemu Windows.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExecutionPolicyPowerShellPolicies
DisableImplicitWinCompat
Po ustawieniu wartości trueto ustawienie wyłącza funkcję zgodności programu Windows PowerShell. Zgodność programu Windows PowerShell umożliwia programowi PowerShell 7 ładowanie modułów programu Windows PowerShell 5.1 w trybie zgodności.
Aby uzyskać więcej informacji, zobacz about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityModuleDenyList
To ustawienie to tablica nazw modułów, które mają zostać wykluczone z udziału w funkcji zgodności programu Windows PowerShell.
Aby uzyskać więcej informacji, zobacz about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityNoClobberModuleList
To ustawienie jest tablicą nazw modułów, które nie powinny być clobbered przez załadowanie programu Windows PowerShell 5.1 wersji modułu.
Aby uzyskać więcej informacji, zobacz about_Windows_PowerShell_Compatibility.
ExecutionPolicy
Ważny
Ta konfiguracja ma zastosowanie tylko na platformach Windows.
Konfiguruje zasady wykonywania dla sesji programu PowerShell, określając, jakie skrypty można uruchomić. Domyślnie program PowerShell używa istniejących zasad wykonywania.
W przypadku konfiguracji AllUsers ustawia zasady wykonywania LocalMachine. W przypadku konfiguracji CurrentUser ustawia zasady wykonywania CurrentUser.
W poniższym przykładzie ustawiono zasady wykonywania programu PowerShell na RemoteSigned.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Aby uzyskać więcej informacji, zobacz about_Execution_Policies.
PowerShellPolicies
System Windows ma kilka ustawień, którymi można zarządzać za pomocą zasad grupy. Zazwyczaj te ustawienia są przechowywane w rejestrze systemu Windows. To ustawienie można również zdefiniować w pliku powershell.config.json.
PowerShellPolicies jest obiektem JSON zawierającym pary klucz-wartość dla różnych ustawień zasad. Te ustawienia zasad można również wyświetlać na poziomie głównym pliku JSON poza obiektem PowerShellPolicies. To ustawienie może zawierać następujące podklucze:
ConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
Ustawienie ScriptExecution służy do ustawiania zasad wykonywania programu PowerShell.
Ma to pierwszeństwo przed ustawieniem ExecutionPolicy opisanym powyżej.
Przykład:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Opisy innych ustawień zasad można znaleźć w sekcji Typowe ustawienia konfiguracji.
W systemie Windows program PowerShell wyszukuje ustawienia w rejestrze. Wszystkie ustawienia znalezione w rejestrze mają pierwszeństwo. Następnie program PowerShell odczytuje konfigurację JSON. Wszystkie ustawienia znalezione w PowerShellPoliciesi niezdefiniowane w rejestrze mają pierwszeństwo przed ustawieniami znajdującymi się na poziomie głównym konfiguracji JSON.
Aby uzyskać więcej informacji, zobacz about_Group_Policy_Settings.
Ustawienia dla platform innych niż Windows
Następujące ustawienia dotyczą tylko platform Linux i macOS.
Poniższe klucze służą do konfigurowania rejestrowania programu PowerShell dla systemów Linux i macOS.
LogChannelsLogIdentityLogKeywordsLogLevel
Aby uzyskać pełny opis rejestrowania programu PowerShell dla systemów innych niż Windows, zobacz about_Logging_Non-Windows.
Typowe ustawienia konfiguracji
Następujące ustawienia są dostępne na wszystkich obsługiwanych platformach.
ConsoleSessionConfigurationExperimentalFeaturesModuleLoggingProtectedEventLoggingPSModulePathScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
ConsoleSessionConfiguration
To ustawienie określa konfigurację sesji, która ma być używana dla wszystkich sesji programu PowerShell. Może to być dowolny punkt końcowy zarejestrowany na komputerze lokalnym, w tym domyślne punkty końcowe komunikacji zdalnej programu PowerShell lub niestandardowy punkt końcowy, który ma określone możliwości roli użytkownika.
Ten klucz zawiera dwa podklucze:
EnableConsoleSessionConfiguration— aby włączyć konfiguracje sesji, ustaw wartość natrue. Domyślnie ta wartość jestfalse.ConsoleSessionConfigurationName— określa nazwę punktu końcowego konfiguracji, w którym jest uruchamiany program PowerShell. Domyślnie nie zdefiniowano żadnej sesji.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Aby uzyskać więcej informacji, zobacz about_Session_Configurations.
Eksperymentalnefeatures
Nazwy funkcji eksperymentalnych, które mają być włączone w programie PowerShell. Wartość domyślna to pusta tablica.
Poniższy przykład umożliwia PSCommandNotFoundSuggestion i PSSubsystemPluginModel funkcji eksperymentalnych podczas uruchamiania programu PowerShell.
Przykład:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Aby uzyskać więcej informacji na temat funkcji eksperymentalnych, zobacz Using experimental features.
Rejestrowanie modułów
To ustawienie steruje zachowaniem rejestrowania modułów programu PowerShell. Ustawienie zawiera dwa podklucze:
-
EnableModuleLogging— aby włączyć rejestrowanie modułów, ustaw wartość natrue. Po włączeniu zdarzenia wykonywania potoku dla elementów członkowskich określonych modułów są rejestrowane w plikach dziennika programu PowerShell. -
ModuleNames— określa nazwę modułów, które mają być rejestrowane.
Przykład:
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
To ustawienie umożliwia skonfigurowanie rejestrowania zdarzeń chronionych. Ustawienie zawiera dwa podklucze:
-
EnableProtectedEventLogging— jeśli to ustawienie zasad zostanie włączone, składniki obsługujące go przy użyciu certyfikatu dostarczanego do szyfrowania danych dziennika przed zapisaniem go w dzienniku. Dane są szyfrowane przy użyciu standardu składni komunikatów kryptograficznych (CMS). Za pomocąUnprotect-CmsMessagemożna odszyfrować te zaszyfrowane komunikaty, jeśli masz dostęp do klucza prywatnego certyfikatu. -
EncryptionCertificate— zawiera listę nazw certyfikatów, które mają być używane do szyfrowania.
Przykład:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Zastępuje ustawienia PSModulePath dla tej sesji programu PowerShell. Jeśli konfiguracja dotyczy bieżącego użytkownika, ustawia ścieżkę modułu CurrentUser. Jeśli konfiguracja dotyczy wszystkich użytkowników, ustawia ścieżkę modułu AllUsers.
Ostrzeżenie
Skonfigurowanie ścieżki modułu AllUsers lub CurrentUser nie powoduje zmiany lokalizacji instalacji o określonym zakresie dla poleceń cmdlet PowerShellGet, takich jak Install-Module. Te polecenia cmdlet zawsze używają domyślnych ścieżek modułu .
Jeśli żadna wartość nie jest ustawiona, program PowerShell używa wartości domyślnej odpowiedniego ustawienia ścieżki modułu. Aby uzyskać więcej informacji o tych wartościach domyślnych, zobacz about_PSModulePath.
To ustawienie umożliwia używanie zmiennych środowiskowych przez osadzanie ich między % znakami, takimi jak "%HOME%\Documents\PowerShell\Modules", w taki sam sposób, jak zezwala powłoka poleceń systemu Windows. Ta składnia ma zastosowanie również w systemach Linux i macOS. Zobacz poniżej, aby zapoznać się z przykładami.
W tym przykładzie przedstawiono konfigurację PSModulePath dla środowiska systemu Windows:
{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
W tym przykładzie przedstawiono konfigurację PSModulePath dla środowiska systemu macOS lub Linux:
{
"PSModulePath": "/opt/powershell/6/Modules"
}
W tym przykładzie pokazano osadzanie zmiennej środowiskowej w konfiguracji PSModulePath. Należy pamiętać, że przy użyciu zmiennej środowiskowej HOME i separatora katalogów / ta składnia działa w systemach Windows, macOS i Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
W tym przykładzie użyto zmiennej środowiskowej, która działa tylko w systemach macOS i Linux:
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
Nuta
Zmiennych programu PowerShell nie można osadzać w konfiguracjach PSModulePath.
PSModulePath konfiguracji w systemach Linux i macOS są uwzględniane wielkość liter. Konfiguracja PSModulePath musi używać prawidłowych separatorów katalogów dla platformy. W systemach macOS i Linux oznacza to /. W systemie Windows działają zarówno /, jak i \.
ScriptBlockLogging
To ustawienie steruje rejestrowaniem wszystkich danych wejściowych skryptu programu PowerShell. To ustawienie zawiera dwa podklucze:
-
EnableScriptBlockLogging— Jeśli to ustawienie zasad zostanie włączone, program PowerShell rejestruje przetwarzanie poleceń, bloków skryptów, funkcji i skryptów niezależnie od tego, czy są wywoływane interaktywnie, czy za pośrednictwem automatyzacji. -
EnableScriptBlockInvocationLogging— umożliwia rejestrowanie zdarzeń uruchamiania i zatrzymywania bloku skryptów.
Przykład:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Transkrypcja
To ustawienie zasad umożliwia przechwytywanie danych wejściowych i wyjściowych poleceń programu PowerShell w transkrypcjach opartych na tekście. Jeśli to ustawienie zasad zostanie włączone, program PowerShell włączy transkrypcję dla wszystkich sesji programu PowerShell.
To ustawienie określa sposób działania transkrypcji w programie PowerShell. To ustawienie zawiera trzy podklucze:
-
EnableTranscripting— po włączeniu tego ustawienia program PowerShell tworzy pliki dziennika transkrypcji w skonfigurowanej lokalizacji. -
EnableInvocationHeader— domyślnie program PowerShell zawiera nagłówek w górnej części pliku dziennika transkrypcji. Nagłówek można wyłączyć przy użyciu tego ustawienia. -
OutputDirectory— to ustawienie umożliwia zbieranie plików dziennika transkrypcji w centralnej lokalizacji zamiast lokalizacji domyślnej.
Przykład:
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "C:\\tmp"
}
}
Aby uzyskać więcej informacji, zobacz Start-Transcript.
UpdatableHelp
To ustawienie zasad umożliwia ustawienie domyślnej wartości parametru SourcePath w poleceniu cmdlet Update-Help. Tę wartość domyślną można zastąpić, określając inną wartość przy użyciu parametru SourcePath.
Przykład:
{
"UpdatableHelp": {
"DefaultSourcePath": "F:\\temp"
}
}