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 truewartość 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 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ć 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 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

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ść 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 ż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ć 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, 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"
    }
}