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. Nie wszystkie klucze mają zastosowanie do wszystkich platform.
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.
Podsumowanie ustawień
Plik powershell.config.json może zawierać następujące klucze:
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExperimentalFeaturesLogChannelsLogIdentityLogKeywordsLogLevelMicrosoft.PowerShell:ExecutionPolicyPSModulePathPowerShellPoliciesExecutionPolicyConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
Zakres konfiguracji
Ustawienia konfiguracji można zdefiniować dla wszystkich użytkowników lub na poziomie poszczególnych użytkowników.
Pierwszeństwo zakresu
Z wyjątkiem kilku specjalnych przypadków ustawienia zdefiniowane na poziomie CurrentUser mają pierwszeństwo przed ustawieniami zdefiniowanymi dla poziomu AllUsers .
W systemach Windows:
- Ustawienia zarządzane przez zasady grupy Windows mają pierwszeństwo przed ustawieniami w plikach konfiguracji.
- Zasady wykonywania obsługują ustawienia na poziomie zakresu.
Na wszystkich platformach:
- Wynikowa wartość
$env:PSModulePathto scalanie wartościPSModulePathklucza z obu zakresó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ą następującego polecenia:
Split-Path $PROFILE.CurrentUserCurrentHost
Ustawienia specyficzne dla systemu Windows
Następujące ustawienia dotyczą tylko platform systemu Windows.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListMicrosoft.PowerShell:ExecutionPolicyPowerShellPoliciesScriptExecution
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.
Microsoft. PowerShell:ExecutionPolicy
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.
Ustawienia dla platform innych niż Windows
Następujące ustawienia dotyczą tylko platform Linux i macOS.
Użyj następujących kluczy, aby skonfigurować rejestrowanie 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.
ExperimentalFeaturesPSModulePathPowerShellPolicies
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.
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\\7\\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 \.
PowerShellPolicies
Jest PowerShellPolicies to obiekt JSON, który zawiera pary klucz-wartość dla różnych ustawień. Z wyjątkiem tego ScriptExecution ustawienia wszystkie ustawienia mogą być używane na platformach Windows, Linux i macOS.
PowerShellPolicies zawiera następujące podklucze:
ConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
W Windows te ustawienia można zarządzać za pomocą Windows zasad grupy. Ustawienia zasad grupy mają pierwszeństwo. Jeśli wartość nie jest ustawiona przez zasady grupy, program PowerShell stosuje wartości w pliku JSON w kolejności pierwszeństwa zakresu .
Zasady grupy to zalecany sposób zarządzania tymi ustawieniami w systemach Windows. Aby uzyskać więcej informacji, zobacz about_Group_Policy_Settings.
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.
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"
]
}
}
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
}
ScriptExecution
Ustawienie ScriptExecution służy do ustawiania zasad wykonywania programu PowerShell.
Ma to pierwszeństwo przed ustawieniem Microsoft.PowrShell:ExecutionPolicy opisanym wcześniej.
Przykład:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Nuta
Jest to ustawienie tylko Windows.
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"
}
}