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.

Ostrzeżenie

Nierozpoznane klucze lub nieprawidłowe wartości w pliku konfiguracji są ignorowane w trybie dyskretnym. 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.

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.

Ogólne ustawienia konfiguracji

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 .

Uwaga

Polecenie Set-ExecutionPolicy cmdlet modyfikuje to ustawienie w pliku konfiguracji AllUsers po wywołaniu za pomocą -Scope LocalMachinepolecenia i modyfikuje to ustawienie w pliku konfiguracji CurrentUser po wywołaniu za pomocą -Scope CurrentUserpolecenia .

"<shell-id>:ExecutionPolicy": "<execution-policy>"

Gdzie:

  • <shell-id> odwołuje się do identyfikatora bieżącego hosta programu PowerShell. W przypadku normalnego programu PowerShell jest Microsoft.PowerShellto . W dowolnej sesji programu PowerShell możesz ją odnaleźć za pomocą polecenia $ShellId.
  • <execution-policy> odnosi się do prawidłowej nazwy zasad wykonywania.

W poniższym przykładzie ustawiono zasady wykonywania programu PowerShell na RemoteSignedwartość .

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}

W systemie Windows równoważne klucze rejestru można znaleźć w obszarze \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellHKEY_LOCAL_MACHINE i HKEY_CURRENT_USER.

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

W tym miejscu skonfigurowanie ścieżki modułu AllUsers lub CurrentUser nie powoduje zmiany lokalizacji instalacji w zakresie 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 dla odpowiedniego ustawienia ścieżki modułu. Aby uzyskać więcej informacji o tych wartościach domyślnych, zobacz about_Modules.

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 cmD. Ta składnia ma zastosowanie również w systemach Linux i macOS. Poniżej przedstawiono przykłady.

"PSModulePath": "<ps-module-path>"

Gdzie:

  • <ps-module-path> jest ścieżką bezwzględną do katalogu modułu. W przypadku wszystkich konfiguracji użytkownika jest to katalog modułu udostępnionego AllUsers. W przypadku bieżących konfiguracji użytkownika jest to katalog modułu CurrentUser.

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 HOME zmiennej środowiskowej i separatora katalogów / będzie to działać w systemach Windows, macOS i Linux.

{
  "PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}

W tym przykładzie pokazano osadzanie zmiennej środowiskowej w konfiguracji, która będzie działać tylko w PSModulePath 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 jest rozróżniana wielkość 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 \ będzie działać.

ExperimentalFeatures

Nazwy funkcji eksperymentalnych do włączenia w programie PowerShell. Domyślnie nie są włączone żadne funkcje eksperymentalne. Wartość domyślna to pusta tablica.

"ExperimentalFeatures": ["<experimental-feature-name>", ...]

Gdzie:

  • <experimental-feature-name> to nazwa funkcji eksperymentalnej, która ma być włączona.

Poniższy przykład umożliwia korzystanie z funkcji eksperymentalnych PSImplicitRemoting i PSUseAbbreviationExpansion podczas uruchamiania programu PowerShell.

{
  "ExperimentalFeatures": [
    "PSImplicitRemotingBatching",
    "PSUseAbbreviationExpansion"
  ]
}

Aby uzyskać więcej informacji na temat funkcji eksperymentalnych, zobacz Używanie funkcji eksperymentalnych.

Konfiguracja rejestrowania spoza systemu Windows

Ważne

Opcje konfiguracji w tej sekcji dotyczą tylko systemów macOS i Linux. Rejestrowanie dla systemu Windows jest zarządzane przez Podgląd zdarzeń systemu Windows.

Rejestrowanie programu PowerShell w systemach macOS i Linux można skonfigurować w pliku konfiguracji programu PowerShell. Pełny opis rejestrowania programu PowerShell dla systemów innych niż Windows można znaleźć w temacie About Logging (Informacje o rejestrowaniu).

LogIdentity

Ważne

Tego ustawienia można używać tylko w systemach macOS i Linux.

Ustawia nazwę tożsamości używaną do zapisywania w dzienniku systemowym. Wartość domyślna to "powershell".

"LogIdentity": "<log-identity>"

Gdzie:

  • <log-identity> to tożsamość ciągu, która powinna być używana przez program PowerShell do zapisywania w dzienniku systemowym.

Uwaga

Może być konieczne posiadanie różnych wartości LogIdentity dla każdego zainstalowanego wystąpienia programu PowerShell.

W tym przykładzie konfigurujemy identyfikator LogIdentity dla wersji zapoznawczej programu PowerShell.

{
  "LogIdentity": "powershell-preview"
}

LogLevel

Ważne

Tego ustawienia można używać tylko w systemach macOS i Linux.

Określa minimalny poziom ważności, na którym program PowerShell powinien rejestrować.

"LogLevel": "<log-level>|default"

Gdzie:

  • <log-level> to jedna z następujących wartości:
    • Zawsze
    • Krytyczne
    • Błąd
    • Ostrzeżenie
    • Informacyjne
    • Pełny
    • Debugowanie

Uwaga

Ustawienie poziomu dziennika powoduje włączenie wszystkich poziomów dziennika powyżej niego.

Ustawienie tego ustawienia na wartość domyślną zostanie zinterpretowane jako wartość domyślna. Wartość domyślna to Informational.

W poniższym przykładzie ustawiono wartość Verbose.

{
  "LogLevel": "Verbose"
}

LogChannels

Ważne

Tego ustawienia można używać tylko w systemach macOS i Linux.

Określa, które kanały rejestrowania są włączone.

"LogChannels": "<log-channel>,..."

Gdzie:

  • <log-channel> to jedna z następujących wartości:
    • Operational — rejestruje podstawowe informacje o działaniach programu PowerShell
    • Analityczny — rejestruje bardziej szczegółowe informacje diagnostyczne

Wartość domyślna to Operacyjne. Aby włączyć oba kanały, dołącz obie wartości jako pojedynczy ciąg rozdzielony przecinkami. Na przykład:

{
  "LogChannels": "Operational,Analytic"
}

LogKeywords

Ważne

Tego ustawienia można używać tylko w systemach macOS i Linux.

Określa, które części programu PowerShell są rejestrowane. Domyślnie wszystkie słowa kluczowe dziennika są włączone. Aby włączyć wiele słów kluczowych, wyświetl listę wartości w jednym ciągu rozdzielanym przecinkami.

"LogKeywords": "<log-keyword>,..."

Gdzie:

  • <log-keyword> to jedna z następujących wartości:
    • Runspace — zarządzanie obszarem działania
    • Potok — operacje potoku
    • Protokół — obsługa protokołów komunikacyjnych, takich jak PSRP
    • Transport — obsługa warstw transportu, na przykład SSH
    • Host — funkcje hosta programu PowerShell, na przykład interakcja z konsolą
    • Polecenia cmdlet — polecenia cmdlet wbudowane programu PowerShell
    • Serializator — logika serializacji
    • Sesja — stan sesji programu PowerShell
    • ManagedPlugin — wtyczka WSMan

Uwaga

Zazwyczaj zaleca się pozostawienie tej wartości niezastawionej, chyba że próbujesz zdiagnozować określone zachowanie w znanej części programu PowerShell. Zmiana tej wartości zmniejsza tylko ilość rejestrowanych informacji.

W tym przykładzie rejestrowanie ogranicza operacje uruchamiania, logikę potoku i użycie polecenia cmdlet. Wszystkie inne rejestrowanie zostanie pominięte.

"LogKeywords": "Runspace,Pipeline,Cmdlets"

Więcej przykładowych konfiguracji

Przykładowa konfiguracja systemu Windows

Ta konfiguracja ma więcej ustawień jawnie ustawionych:

  • Zasady wykonywania dla tej instalacji programu PowerShell to AllSigned
  • Ścieżka modułu CurrentUser jest ustawiona na katalog modułu na dysku udostępnionym
  • Funkcja eksperymentalna PSImplicitRemotingBatching jest włączona

Uwaga

Ustawienia ExecutionPolicy i PSModulePath będą działać tylko na platformie Windows, ponieważ ścieżka modułu używa \ znaków separatora i i ; zasady wykonywania nie Unrestricted jest (jedynymi zasadami dozwolonymi na platformach przypominających system UNIX).

{
  "Microsoft.PowerShell:ExecutionPolicy": "AllSigned",
  "PSModulePath": "Z:\\Marisol's Shared Drive\\Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
}

Przykład konfiguracji innej niż Windows

Ta konfiguracja ustawia wiele opcji, które działają tylko w systemie macOS lub Linux:

  • Ścieżka modułu CurrentUser jest ustawiona na katalog modułu niestandardowego w programie $HOME
  • Funkcja eksperymentalna PSImplicitRemotingBatching jest włączona
  • Poziom rejestrowania programu PowerShell jest ustawiony na pełne, aby uzyskać więcej rejestrowania
  • Ta instalacja programu PowerShell zapisuje dane w dziennikach przy użyciu tożsamości programu Home-PowerShell .
{
  "PSModulePath": "%HOME%/.powershell/Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
  "LogLevel": "Verbose",
  "LogIdentity": "home-powershell"
}

Zobacz też