Udostępnij za pośrednictwem


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 umożliwiającym konfigurację 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 okna. Te podklucze mają również zastosowanie do wszystkich platform, gdy są zdefiniowane 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 interaktywnej. 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ółużytkowany)

powershell.config.json Plik w $PSHOME katalogu definiuje konfigurację dla wszystkich sesji programu PowerShell uruchomionych z tej instalacji programu PowerShell.

Uwaga

Lokalizacja $PSHOME jest zdefiniowana 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 system Windows zasady grupy mają pierwszeństwo przed ustawieniami w pliku konfiguracji. zasady grupy nie istnieje na platformach innych niż Windows.

Po zasady grupy ustawienia zdefiniowane na poziomie AllUsers mają pierwszeństwo przed ustawieniami zdefiniowanymi dla poziomu CurrentUser.

Ustawienia specyficzne dla systemu Windows

Poniższe ustawienia dotyczą tylko platform systemu Windows.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExecutionPolicy
  • PowerShellPolicies

DisableImplicitWinCompat

Gdy jest ustawiona truewartość , to ustawienie wyłącza funkcję zgodności Windows PowerShell. Windows PowerShell zgodność umożliwia programowi PowerShell 7 ładowanie modułów Windows PowerShell 5.1 w trybie zgodności.

Aby uzyskać więcej informacji, zobacz about_Windows_PowerShell_Compatibility.

WindowsPowerShellCompatibilityModuleDenyList

To ustawienie jest tablicą nazw modułów, które mają zostać wykluczone z udziału w funkcji zgodności 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 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 RemoteSignedwartość .

{
  "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ć przez zasady 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ępny program PowerShell odczytuje konfigurację JSON. Wszystkie ustawienia znalezione w obszarze PowerShellPoliciesi 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

Poniższe 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

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.

  • 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 z określonymi funkcjami roli użytkownika.

Ten klucz zawiera dwa podklucze:

  • EnableConsoleSessionConfiguration — aby włączyć konfiguracje sesji, ustaw wartość na true. Domyślnie ta wartość to false.

  • ConsoleSessionConfigurationName - Określa nazwę punktu końcowego konfiguracji, w którym jest uruchamiany program PowerShell. Domyślnie nie zdefiniowano sesji.

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

Aby uzyskać więcej informacji, zobacz about_Session_Configurations.

ExperimentalFeatures

Nazwy funkcji eksperymentalnych do włączenia w programie PowerShell. Wartość domyślna to pusta tablica.

Poniższy przykład umożliwia korzystanie z funkcji eksperymentalnych 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. To ustawienie zawiera dwa podklucze:

  • EnableModuleLogging — aby włączyć konfiguracje sesji, ustaw wartość na true. 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 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). Możesz użyć Unprotect-CmsMessage do odszyfrowania tych zaszyfrowanych komunikatów, 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 PSModulePath ustawienia tej sesji programu PowerShell. Jeśli konfiguracja jest przeznaczona dla bieżącego użytkownika, ustawia ścieżkę modułu CurrentUser . Jeśli konfiguracja jest przeznaczona dla wszystkich użytkowników, ustawia ścieżkę modułu AllUsers .

Ostrzeżenie

Konfigurowanie ścieżki modułu AllUsers lub CurrentUser w tym miejscu 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 nie ustawiono żadnej wartości, program PowerShell używa wartości domyślnej dla 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 dotyczy również systemów 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 środowiskowej HOME 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 konfiguracje w systemach Linux i macOS są uwzględniane wielkości liter. Konfiguracja PSModulePath 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 bloków skryptów.

Przykład:

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

Transkrypcji

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 steruje sposobem 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. Możesz wyłączyć nagłówek 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 Rozpoczynanie transkrypcji.

UpdatableHelp

To ustawienie zasad umożliwia ustawienie wartości domyślnej 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"
    }
}