about_Session_Configuration_Files

Krótki opis

Opisuje pliki konfiguracji sesji, które są używane w konfiguracji sesji (znanej również jako "punkt końcowy") do zdefiniowania środowiska sesji korzystających z konfiguracji sesji.

Długi opis

Te informacje dotyczą tylko programu PowerShell uruchomionego w systemie Windows.

"Plik konfiguracji sesji" to plik tekstowy z rozszerzeniem nazwy pliku pssc zawierającym tabelę skrótów właściwości i wartości konfiguracji sesji. Możesz użyć pliku konfiguracji sesji, aby ustawić właściwości konfiguracji sesji. W ten sposób definiuje środowisko wszystkich sesji programu PowerShell korzystających z tej konfiguracji sesji.

Pliki konfiguracji sesji ułatwiają tworzenie niestandardowych konfiguracji sesji bez używania złożonych zestawów lub skryptów języka C#.

"Konfiguracja sesji" lub "punkt końcowy" to kolekcja ustawień komputera lokalnego, które określają takie elementy, jak użytkownicy mogą tworzyć sesje na komputerze; polecenia, które użytkownicy mogą uruchamiać w tych sesjach; oraz czy sesja powinna być uruchomiona jako uprzywilejowane konto wirtualne. Aby uzyskać więcej informacji na temat konfiguracji sesji, zobacz Informacje o konfiguracjach sesji.

Konfiguracje sesji zostały wprowadzone w programie Windows PowerShell 2.0, a pliki konfiguracji sesji zostały wprowadzone w programie Windows PowerShell 3.0. Aby uwzględnić plik konfiguracji sesji w konfiguracji sesji, należy użyć programu Windows PowerShell 3.0. Jednak użytkownicy programu Windows PowerShell 2.0 (i nowszego) mają wpływ na ustawienia w konfiguracji sesji.

Tworzenie sesji niestandardowych

Wiele funkcji sesji programu PowerShell można dostosować, określając właściwości sesji w konfiguracji sesji. Sesję można dostosować, pisząc program w języku C#, który definiuje niestandardową przestrzeń uruchamiania, lub możesz użyć pliku konfiguracji sesji do zdefiniowania właściwości sesji utworzonych przy użyciu konfiguracji sesji. Ogólnie rzecz biorąc, łatwiej jest użyć pliku konfiguracji sesji niż napisać program w języku C#.

Możesz użyć pliku konfiguracji sesji, aby utworzyć elementy, takie jak w pełni działające sesje dla wysoce zaufanych użytkowników; zablokowane sesje, które zezwalają na minimalny dostęp; sesje przeznaczone dla konkretnych i zawierające tylko moduły wymagane dla tych zadań; i sesje, w których użytkownicy nieuprzywilejowani mogą uruchamiać tylko określone polecenia jako uprzywilejowane konto.

Oprócz tego można zarządzać tym, czy użytkownicy sesji mogą używać elementów języka programu PowerShell, takich jak bloki skryptów, czy też mogą uruchamiać tylko polecenia. W sesji można zarządzać wersją użytkowników programu PowerShell. zarządzanie modułami importowanymi do sesji; i zarządzaj poleceniami cmdlet, funkcjami i aliasami, które użytkownicy sesji mogą uruchamiać. W przypadku korzystania z pola RoleDefinitions można nadać użytkownikom różne możliwości w sesji na podstawie członkostwa w grupie.

Aby uzyskać więcej informacji na temat funkcji RoleDefinitions i sposobu definiowania tej wartości, zobacz temat pomocy dla polecenia cmdlet New-PSRoleCapabilityFile.

Tworzenie pliku konfiguracji sesji

Najprostszym sposobem utworzenia pliku konfiguracji sesji jest użycie polecenia cmdlet New-PSSessionConfigurationFile. To polecenie cmdlet generuje plik, który używa poprawnej składni i formatu, i automatycznie weryfikuje wiele wartości właściwości pliku konfiguracji.

Aby uzyskać szczegółowe opisy właściwości, które można ustawić w pliku konfiguracji sesji, zobacz temat pomocy dla polecenia cmdlet New-PSSessionConfigurationFile.

Następujące polecenie tworzy plik konfiguracji sesji, który używa wartości domyślnych. Wynikowy plik konfiguracji używa tylko wartości domyślnych, ponieważ nie są uwzględniane żadne parametry inne niż parametr Path (który określa ścieżkę pliku):

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Aby wyświetlić nowy plik konfiguracji w domyślnym edytorze tekstów, użyj następującego polecenia:

Invoke-Item -Path .\Defaults.pssc

Aby utworzyć konfigurację sesji dla sesji, w których użytkownik może uruchamiać polecenia, ale nie używać innych elementów języka programu PowerShell, wpisz:

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

W poprzednim poleceniu ustawienie parametru LanguageMode na Wartość NoLanguage uniemożliwia użytkownikom wykonywanie takich czynności jak pisanie lub uruchamianie skryptów lub używanie zmiennych.

Aby utworzyć konfigurację sesji dla sesji, w których użytkownicy mogą używać tylko poleceń cmdlet Get, wpisz:

New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc

W poprzednim przykładzie ustawienie parametru VisibleCmdlets na get-* ogranicza użytkowników do poleceń cmdlet, które mają nazwy rozpoczynające się od wartości ciągu "Get-".

Aby utworzyć konfigurację sesji dla sesji uruchamianych w ramach uprzywilejowanego konta wirtualnego zamiast poświadczeń użytkownika, wpisz:

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

Aby utworzyć konfigurację sesji dla sesji, w których polecenia widoczne dla użytkownika są określone w pliku możliwości roli, wpisz:

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

Używanie pliku konfiguracji sesji

Plik konfiguracji sesji można dołączyć podczas tworzenia konfiguracji sesji lub dodać plik do konfiguracji sesji w późniejszym czasie.

Aby dołączyć plik konfiguracji sesji podczas tworzenia konfiguracji sesji, użyj parametru Path polecenia cmdlet Register-PSSessionConfiguration.

Na przykład następujące polecenie używa pliku NoLanguage.pssc podczas tworzenia konfiguracji sesji NoLanguage.

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

Po rozpoczęciu nowej sesji NoLanguage użytkownicy będą mieli dostęp tylko do poleceń programu PowerShell.

Aby dodać plik konfiguracji sesji do istniejącej konfiguracji sesji, użyj polecenia cmdlet Set-PSSessionConfiguration i parametru Path. Ma to wpływ na wszystkie nowe sesje utworzone przy użyciu określonej konfiguracji sesji. Należy pamiętać, że polecenie cmdlet Set-PSSessionConfiguration zmienia samą sesję i nie modyfikuje pliku konfiguracji sesji.

Na przykład następujące polecenie dodaje plik NoLanguage.pssc do konfiguracji sesji LockedDown.

Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc

Gdy użytkownicy używają konfiguracji sesji LockedDown do utworzenia sesji, będą mogli uruchamiać polecenia cmdlet, ale nie będą mogli tworzyć ani używać zmiennych, przypisywać wartości lub używać innych elementów języka programu PowerShell.

Następujące polecenie używa polecenia cmdlet New-PSSession do utworzenia sesji na komputerze Srv01, który używa konfiguracji sesji LockedDown, zapisując odwołanie do obiektu do sesji w zmiennej $s. Lista ACL (lista kontroli dostępu) konfiguracji sesji określa, kto może jej użyć do utworzenia sesji.

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

Ponieważ ograniczenia noLanguage zostały dodane do konfiguracji sesji LockedDown, użytkownicy w sesjach lockedDown będą mogli uruchamiać tylko polecenia i polecenia cmdlet programu PowerShell. Na przykład następujące dwa polecenia używają polecenia cmdlet Invoke-Command do uruchamiania poleceń w sesji, do których odwołuje się zmienna $s. Pierwsze polecenie, które uruchamia polecenie cmdlet Get-UICulture i nie używa żadnych zmiennych, powiedzie się. Drugie polecenie, które pobiera wartość zmiennej $PSUICulture, kończy się niepowodzeniem.

Invoke-Command -Session $s {Get-UICulture}
en-US

Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo          : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed

Edytowanie pliku konfiguracji sesji

Wszystkie ustawienia w konfiguracji sesji z wyjątkiem RunAsVirtualAccount i RunAsVirtualAccountGroups można zmodyfikować, edytując plik konfiguracji sesji używany przez konfigurację sesji. W tym celu rozpocznij od zlokalizowania aktywnej kopii pliku konfiguracji sesji.

W przypadku korzystania z pliku konfiguracji sesji w konfiguracji sesji program PowerShell tworzy aktywną kopię pliku konfiguracji sesji i zapisuje go w katalogu $pshome\SessionConfig na komputerze lokalnym.

Lokalizacja aktywnej kopii pliku konfiguracji sesji jest przechowywana we właściwości ConfigFilePath obiektu konfiguracji sesji.

Następujące polecenie pobiera lokalizację pliku konfiguracji sesji dla konfiguracji sesji NoLanguage.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

To polecenie zwraca ścieżkę pliku podobną do następującej:

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Plik pssc można edytować w dowolnym edytorze tekstów. Po zapisaniu pliku będzie on używany przez wszystkie nowe sesje korzystające z konfiguracji sesji.

Jeśli musisz zmodyfikować ustawienia RunAsVirtualAccount lub RunAsVirtualAccountGroups, musisz wyrejestrować konfigurację sesji i ponownie zarejestrować plik konfiguracji sesji zawierający edytowane wartości.

Testowanie pliku konfiguracji sesji

Użyj polecenia cmdlet Test-PSSessionConfigurationFile, aby przetestować ręcznie edytowane pliki konfiguracji sesji. Jest to ważne: jeśli składnia pliku i wartości nie są prawidłowymi użytkownikami, nie będą mogli utworzyć sesji przy użyciu konfiguracji sesji.

Na przykład następujące polecenie testuje plik konfiguracji aktywnej sesji konfiguracji sesji NoLanguage.

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Jeśli składnia i wartości w pliku konfiguracji są prawidłowe Test-PSSessionConfigurationFile zwraca wartość True. Jeśli składnia i wartości są nieprawidłowe, polecenie cmdlet zwraca wartość False.

Możesz użyć polecenia Test-PSSessionConfigurationFile, aby przetestować dowolny plik konfiguracji sesji, w tym pliki tworzone przez polecenie cmdlet New-PSSessionConfiguration. Aby uzyskać więcej informacji, zobacz temat pomocy dla polecenia cmdlet Test-PSSessionConfigurationFile.

Usuwanie pliku konfiguracji sesji

Nie można usunąć pliku konfiguracji sesji z konfiguracji sesji. Można jednak zastąpić plik nowym plikiem, który używa ustawień domyślnych. Spowoduje to skuteczne anulowanie ustawień używanych przez oryginalny plik konfiguracji.

Aby zastąpić plik konfiguracji sesji, utwórz nowy plik konfiguracji sesji, który używa ustawień domyślnych, a następnie użyj polecenia cmdlet Set-PSSessionConfiguration, aby zastąpić niestandardowy plik konfiguracji sesji nowym plikiem.

Na przykład następujące polecenia tworzą plik konfiguracji sesji domyślnej, a następnie zastąp plik konfiguracji aktywnej sesji w konfiguracji sesji NoLanguage.

New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc

Po zakończeniu tych poleceń konfiguracja sesji NoLanguage faktycznie zapewni obsługę pełnego języka (ustawienie domyślne) dla wszystkich sesji utworzonych przy użyciu tej konfiguracji sesji.

Wyświetlanie właściwości konfiguracji sesji Obiekty konfiguracji sesji reprezentujące konfiguracje sesji przy użyciu plików konfiguracji sesji mają dodatkowe właściwości, które ułatwiają odnajdywanie i analizowanie konfiguracji sesji. (Pamiętaj, że nazwa typu pokazana poniżej zawiera sformatowaną definicję widoku). Właściwości można wyświetlić, uruchamiając polecenie cmdlet Get-PSSessionConfiguration i potokując zwrócone dane do polecenia cmdlet Get-Member:

Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration

Name                          MemberType     Definition
----                          ----------     ----------
Equals                        Method         bool Equals(System.O...
GetHashCode                   Method         int GetHashCode()
GetType                       Method         type GetType()
ToString                      Method         string ToString()
Architecture                  NoteProperty   System.String Archit...
Author                        NoteProperty   System.String Author...
AutoRestart                   NoteProperty   System.String AutoRe...
Capability                    NoteProperty   System.Object[] Capa...
CompanyName                   NoteProperty   System.String Compan...
configfilepath                NoteProperty   System.String config...
Copyright                     NoteProperty   System.String Copyri...
Enabled                       NoteProperty   System.String Enable...
ExactMatch                    NoteProperty   System.String ExactM...
ExecutionPolicy               NoteProperty   System.String Execut...
Filename                      NoteProperty   System.String Filena...
GUID                          NoteProperty   System.String GUID=0...
ProcessIdleTimeoutSec         NoteProperty   System.String Proces...
IdleTimeoutms                 NoteProperty   System.String IdleTi...
lang                          NoteProperty   System.String lang=e...
LanguageMode                  NoteProperty   System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty   System.String MaxCon...
MaxConcurrentUsers            NoteProperty   System.String MaxCon...
MaxIdleTimeoutms              NoteProperty   System.String MaxIdl...
MaxMemoryPerShellMB           NoteProperty   System.String MaxMem...
MaxProcessesPerShell          NoteProperty   System.String MaxPro...
MaxShells                     NoteProperty   System.String MaxShells
MaxShellsPerUser              NoteProperty   System.String MaxShe...
Name                          NoteProperty   System.String Name=N...
PSVersion                     NoteProperty   System.String PSVersion
ResourceUri                   NoteProperty   System.String Resour...
RunAsPassword                 NoteProperty   System.String RunAsP...
RunAsUser                     NoteProperty   System.String RunAsUser
SchemaVersion                 NoteProperty   System.String Schema...
SDKVersion                    NoteProperty   System.String SDKVer...
OutputBufferingMode           NoteProperty   System.String Output...
SessionType                   NoteProperty   System.String Sessio...
UseSharedProcess              NoteProperty   System.String UseSha...
SupportsOptions               NoteProperty   System.String Suppor...
xmlns                         NoteProperty   System.String xmlns=...
XmlRenderingType              NoteProperty   System.String XmlRen...
Permission                    ScriptProperty System.Object Permis...

Te właściwości ułatwiają wyszukiwanie określonych konfiguracji sesji. Na przykład można użyć właściwości ExecutionPolicy, aby znaleźć konfigurację sesji, która obsługuje sesje z zasadami wykonywania RemoteSigned. Należy pamiętać, że ponieważ właściwość ExecutionPolicy istnieje tylko w sesjach korzystających z plików konfiguracji sesji, polecenie może nie zwracać wszystkich konfiguracji sesji kwalifikacyjnej.

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

Następujące polecenie pobiera konfiguracje sesji, w których element RunAsUser jest administratorem programu Exchange.

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

Aby wyświetlić informacje o definicjach ról skojarzonych z konfiguracją, użyj polecenia cmdlet Get-PSSessionCapability. To polecenie cmdlet umożliwia określenie poleceń i środowiska dostępnych dla określonych użytkowników w określonych punktach końcowych.

Uwagi

Konfiguracje sesji obsługują również typ sesji znany jako sesja "pusta". Pusty typ sesji umożliwia tworzenie sesji niestandardowych za pomocą wybranych poleceń. Jeśli nie dodasz modułów, funkcji ani skryptów do pustej sesji, sesja jest ograniczona do wyrażeń i może nie być żadnym praktycznym zastosowaniem. Właściwość SessionType informuje, czy pracujesz z pustą sesją.

Zobacz też