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, aby włączyć 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 allUsers (udostępniona)

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 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ą polecenia Split-Path $PROFILE.CurrentUserCurrentHost.

Ogólne ustawienia konfiguracji

ExecutionPolicy

Ważne

Ta konfiguracja ma zastosowanie tylko na platformach systemu 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 to .Microsoft.PowerShell W dowolnej sesji programu PowerShell możesz ją odnaleźć za pomocą polecenia $ShellId.
  • <execution-policy> odwołuje 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 \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell obszarze HKEY_LOCAL_MACHINE i HKEY_CURRENT_USER.

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

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 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_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 funkcja CMD. Ta składnia dotyczy również systemów Linux i macOS. Zobacz poniżej, aby zapoznać się z przykładami.

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

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

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

Eksperymentalnefeatures

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> jest nazwą funkcji eksperymentalnej do włączenia.

W poniższym przykładzie włączono funkcje eksperymentalne 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

To ustawienie może być używane 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 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

To ustawienie może być używane 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 działają tylko na platformie Systemu Windows, ponieważ ścieżka modułu używa \ znaków separatora i znaków ; separatora, a zasady wykonywania nie Unrestricted są (jedyne zasady dozwolone na platformach podobnych do 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ż