about_PowerShell_Config
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:
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExperimentalFeatures
LogChannels
LogIdentity
LogKeywords
LogLevel
Microsoft.PowerShell:ExecutionPolicy
PSModulePath
PowerShellPolicies
ExecutionPolicy
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Nie wszystkie klucze mają zastosowanie do wszystkich platform. Klucz PowerShellPolicies
zawiera podklucze dublujące 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.
powershell.config.json
Jeśli plik 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 $PSHOME
katalogu definiuje konfigurację dla wszystkich sesji programu PowerShell uruchomionych z tej instalacji programu PowerShell.
Uwaga
Lokalizacja jest zdefiniowana $PSHOME
jako ten sam katalog co wykonywanie zestawu 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.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
W przypadku ustawienia na true
wartość to to ustawienie powoduje wyłączenie funkcji 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żne
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
wartość .
{
"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 powershell.config.json
pliku.
Jest PowerShellPolicies
to obiekt JSON, który zawiera 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:
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
To ScriptExecution
ustawienie 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 opisach 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 obszarze PowerShellPolicies
i niezdefiniowane w rejestrze mają pierwszeństwo przed ustawieniami znajdującymi się na poziomie głównym konfiguracji JSON.
Aby uzyskać więcej informacji, zobacz temat Informacje o ustawieniach zasad grupy.
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.
LogChannels
LogIdentity
LogKeywords
LogLevel
Pełny opis rejestrowania programu PowerShell dla systemów innych niż Windows można znaleźć w temacie about_Logging_Non-Windows.
Typowe ustawienia konfiguracji
Następujące ustawienia są dostępne na wszystkich obsługiwanych platformach.
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
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ść tofalse
.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.
W poniższym przykładzie włączono funkcje eksperymentalne PSCommandNotFoundSuggestion i PSSubsystemPluginModel podczas uruchamiania programu PowerShell.
Przykład:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Aby uzyskać więcej informacji na temat funkcji eksperymentalnych, zobacz Używanie funkcji eksperymentalnych.
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, które obsługują go, używają certyfikatu dostarczanego do szyfrowania danych dziennika przed zapisaniem go w dzienniku. Dane są szyfrowane przy użyciu standardu składni komunikatów kryptograficznych (CMS). Tych zaszyfrowanych wiadomości można użyćUnprotect-CmsMessage
do odszyfrowania, 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
PSModulePath
Zastępuje ustawienia 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 w zakresie dla poleceń cmdlet PowerShellGet, takich jak Install-Module. Te polecenia cmdlet zawsze używają domyślnych ścieżek modułów.
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 na temat tych wartości 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
środowiska systemu Windows:
{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
W tym przykładzie przedstawiono konfigurację PSModulePath
środowiska systemu macOS lub Linux:
{
"PSModulePath": "/opt/powershell/6/Modules"
}
W tym przykładzie pokazano osadzanie zmiennej środowiskowej PSModulePath
w konfiguracji. Należy pamiętać, że przy użyciu zmiennej HOME
środowiskowej i separatora /
katalogu 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"
}
Uwaga
Zmiennych programu PowerShell nie można osadzać w PSModulePath
konfiguracjach.
PSModulePath
w konfiguracjach w systemach Linux i macOS uwzględniana jest wielkość liter.
PSModulePath
Konfiguracja musi używać prawidłowych separatorów katalogów dla platformy. W systemach macOS i Linux oznacza to ./
Zarówno w systemie Windows, jak /
i \
działa.
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 jest wywoływany interaktywnie, czy za pośrednictwem automatyzacji. -
EnableScriptBlockInvocationLogging
— włącza rejestrowanie zdarzeń uruchamiania i zatrzymywania bloku skryptu.
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 Update-Help
cmdlet. Tę wartość domyślną można zastąpić, określając inną wartość przy użyciu parametru SourcePath .
Przykład:
{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}